Square tube mirror-based imaging system

ABSTRACT

A system is described for providing a three-dimensional representation of a scene from a single image. The system includes a reflector having a plurality of reflective surfaces for providing an interior reflective area defining a substantially quadrilateral cross section, wherein the reflector reflective surfaces are configured to provide nine views of an image. An imager is included for converting the nine-view image into digital data. Computer systems and computer program products for converting the data into three-dimensional representations of the scene are described.

This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/178,776, filed May 15, 2009, the entirety of the disclosure of which is incorporated herein by reference.

TECHNICAL FIELD

The present invention relates to the art of three dimensional imaging. More particularly, the invention relates to devices and methods for three-dimensional imaging, capable of generating stereoscopic images and image-plus-depth utilizing a single imager and image.

COPYRIGHT

A portion of the disclosure of this document contains materials subject to a claim of copyright protection. The copyright owner has no objection to the reproduction by anyone of the patent document or the patent disclosure as it appears in the U.S. Patent and Trademark Office patent files or records, but reserves all other rights with respect to the work.

BACKGROUND OF THE INVENTION

Conventional stereo imaging systems require multiple imagers such as cameras, to obtain images of the same scene from different angles. The cameras are separated by a distance, similar to human eyes. A device such as a computer then calculates depths of objects in the scene by comparing images shot by the multiple cameras. This is typically done by shifting one image on top of the other one to identify matching points. The shifted amount is called the disparity. The disparity at which objects in the images best match is used by the computer to calculate their depths.

Prior art multi-view imaging systems use only one camera to calculate the object depth. In most cases, such a system uses specially designed mirrored surfaces to create virtual cameras. With the views captured by the real camera and the virtual cameras the computer can use the same scheme as in classic computer vision to calculate the depth of an object.

One prior art multi-view imaging system (Yuuki Uranishi, Mika Naganawa, Yoshihiro Yasumuro, Masataka Imura, Yoshitsugu Manabe, Kunihiro Chihara: Three-Dimensional Measurement System Using a Cylindrical Mirror, SCIA 2005: 399-408) uses a cylindrical mirror (CM) to create virtual cameras. The CM is a hollow tube or chamber providing mirrored surfaces on the interior. The camera, equipped with a fish eye lens, captures the scene through the mirror. A CM can create infinitely many symmetric virtual cameras, one for each radial line, if the real camera lies on the center line of the CM, for each point in the captured image (image inside the center circle), correspondence can be found on some radial lines of the image. Another prior art system (U.S. Pat. No. 7,420,750) provides a cylindrical mirror device wherein a front end and rear end of the CM can have different dimensions.

The advantage of such a cylindrical mirror device is that the user can always find corresponding points on the same diameter line of the image. This is because each radial slice of the captured image has its own virtual camera. However, this property requires that the optical axis pass through a center axis of the mirror and further that the optical axis be parallel to every mirror surface tangent plane. Such devices are difficult to calibrate, and generate heavily blurred images. A point on the object corresponds to a very large area in the reflection if that point is close to the center of the mirror. This is because the distance between the object and the virtual camera is much longer than the distance between the object and the real camera, but the focusing distances of the real and virtual cameras are still the same. The blurring of the images makes the work of identifying the corresponding point for a point on the object very difficult.

Accordingly, a need is identified for an improved devices and method for multi-view imaging systems. The multi-view imaging systems set forth in the present disclosure provides a plurality of corresponding images from a single camera image, without the blurring of images noted in prior art systems. Still further, the present disclosure provides methods for deriving stereoscopic images and image-plus-depth utilizing a single imager and image. The described imaging system finds use in a variety of devices and applications, including without limitation (1) providing three-dimensional contents to three-dimensional photo frames, three-dimensional personal computer displays and three-dimensional television displays; (2) specialized lenses for document cameras and endoscopes so these devices can generate stereoscopic images and image-plus-depth; (3) three-dimensional Web cameras for personal computers and three-dimensional cameras for three-dimensional photo frames and mobile devices (such as intelligent cell-phones); (4) three-dimensional representations of the mouth and eyes of a patient.

SUMMARY OF THE INVENTION

To solve the aforementioned and other problems, there are provided herein novel multi-view imaging systems. In accordance with a first aspect of the invention, a system is described for providing a three-dimensional representation of a scene from a single image. The system includes a reflector for providing an interior reflective area defining a substantially quadrilateral cross section, wherein the reflector reflective surfaces are configured to provide nine views of an image. In particular embodiments, the reflector may define a square or rectangle in side view, or may define an isosceles trapezoid in side view. An imager may be provided to convert the nine-view image from the reflector into digital data. The data may be rendered into stereoscopic images or image-plus-depth renderings.

In another aspect there is provided a software for rendering a nine view image provided by the system described above into a stereoscopic image or an image-plus-depth rendering, including a first component for identifying a camera location relative to a scene of which a nine view image is to be taken, a second component for identifying a selected point in a central view of the nine view image and for identifying points corresponding to the selected point in the remaining eight views, and a third component for identifying a depth of the selected point or points in the central view. A fourth software component combines the corresponding points data and the depth data to provide a three-dimensional image. The second and third components may be the same, and/or may identify depth and corresponding points concurrently.

In yet another aspect, there is provided a computing system for rendering a nine view image into a stereoscopic image or an image-plus-depth rendering. The computing system includes a camera for translating an image into a digital form, and a reflector as described above. There is also provided a computing device or processor for receiving data from the camera and converting those data as described above to provide a three-dimensional image from a single image obtained by the camera.

These and other embodiments, aspects, advantages, and features will be set forth in the description which follows, and in part will become apparent to those of ordinary skill in the art by reference to the following description of the invention and referenced drawings or by practice of the invention. The aspects, advantages, and features of the invention are realized and attained by means of the instrumentalities, procedures, and combinations particularly pointed out in the appended claims. Unless otherwise indicated, any patent and non-patent references discussed herein are incorporated in their entirety into the present disclosure specifically by reference.

BRIEF DESCRIPTION OF THE DRAWING

The accompanying drawings, incorporated herein and forming a part of the specification, illustrate several aspects of the present invention and together with the description serve to explain certain principles of the invention. In the drawings:

FIG. 1 shows a square-tube mirror based imaging system according to the present disclosure;

FIG. 2 shows the square-tube mirror (STM) of FIG. 1;

FIG. 3 graphically depicts a nine-view STM image;

FIG. 4 shows a focused STM image;

FIG. 5 shows a defocused STM image;

FIG. 6 graphically depicts the corners of the central, left, and right views of FIG. 3;

FIG. 7 shows the image of FIG. 6 after rotation, clipping, and translation;

FIG. 8 depicts a point (P) in a virtual central view of an STM image, and the corresponding point (P′) in the virtual right view;

FIG. 9 schematically shows a top view of an STM with d>l;

FIG. 10 schematically shows an STM wherein the field of view of a camera covers the STM and additional space;

FIG. 11 schematically depicts an STM with d>½ but d<l;

FIG. 12 schematically depicts a sloped STM;

FIG. 13 depicts a labeled nine-view STM image;

FIG. 14 shows an STM image angle α;

FIG. 15 schematically depicts an STM wherein the field of view of the camera covers only a portion of the STM;

FIG. 16 schematically depicts an STM wherein the field of view of the camera covers more than the entire STM;

FIG. 17 schematically depicts a corresponding point P in a virtual right view of an STM;

FIG. 18 schematically depicts a situation wherein a corresponding point of P does not exist in the virtual right view of an STM image;

FIG. 19 schematically depicts a projection of a point onto a virtual image plane with respect to an actual camera;

FIG. 20 schematically depicts a point in a virtual right view of an STM image, and that points counterpart in the STM image right view;

FIG. 21 schematically depicts a point in a virtual left view of an STM image, and that points counterpart in the STM image left view;

FIG. 22 schematically depicts a patient mouth reproducing device;

FIG. 23 schematically depicts an STM-based intraoral imaging device;

FIG. 24 schematically depicts an STM-based Web camera for three-dimensional imaging; and

FIG. 25 shows a nine-view image provided by the STM-based Web camera of FIG. 24.

DETAILED DESCRIPTION OF THE INVENTION

In the following detailed description of the illustrated embodiments, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration, specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Also, it is to be understood that other embodiments may be utilized and that process, materials, reagent, and/or other changes may be made without departing from the scope of the present invention.

Square-Tube Mirror-Based Imaging Device

In one aspect, the present disclosure provides a Square Tube Mirror-based Imaging System 10 (hereinafter STMIS; schematically depicted in FIG. 1) comprising a square tube mirror (STM) 12, an imager 14 such as a digital camera, a computer 16 and a set of stereoscopic image generation, depth computation, modeling and rendering programs.

In one embodiment (see FIG. 2), the STM 12 comprises an interior component 20 and an outer frame 22. The interior component comprises four substantially identically-shaped planar reflective surfaces 24 a, b, c, d supported by a housing 26, defining in cross-section a substantially square shape. The reflective surfaces will be selected from materials which do not create double reflections. The STM 12 may define in side view a quadrilateral such as a square, a rectangle, a pyramid, an isosceles trapezoid, or the like. The outer frame 22 is provided to support the housing 26, and to cooperatively connect the interior component with the lens 18 of an imager 14 such as a digital camera. Typically, the outer frame 22 will also comprise a mechanism to adjust a distance between the interior, reflective surfaces 24 a, b, c, d and a pinhole (not shown) of the imager 14. That is, the housing 26 is adapted to be slidably displaceable within the outer frame 22, to allow incremental adjustment of a distance between an end of the interior component 20 and the imager 14 pinhole. The STM is connected to the lens 18 of the imager 16 by substantially conventional means, such as by providing cooperating threaded fasteners 28, 30 at a rear portion of the STM 12 and at a front portion of the imager 14 or lens 18.

A major feature of the described STM 12 is that, when a user views a scene, nine discrete views of the scene are provided, as if the user is viewing at the scene from nine different view points and orientations concurrently. This is because in addition to the center view, the user also is provided eight reflections of the scene from the four reflective surfaces 24 a, b, c, d. Four of the views are generated by reflecting the scene once and four of the views are generated by reflecting the scene twice. Therefore, each picture taken by the camera in the present STM-based imaging system is composed of nine different views of the scene. Such a picture is called an STM image. The nine different views, arranged in a 3×3 rectangular grid, are composed of a central view, a left view, a right view, a lower view and a upper view (reflected once) and four corner views (reflected twice). FIG. 3 provides a representation of the described grid.

As will be described in greater detail below, information from these different views can be used by the software of the system to generate stereoscopic images or image-plus-depths of the objects in the scene. Thus, a user can generate 3D images with only one camera and one picture. Broadly, an image-plus-depth is generated by combining the central view of an STM image with a depth map computed for the central view of that STM image. Once a region in the central view of an STM image is specified, a stereoscopic image is generated by taking appropriate regions from the left view and the right view of that STM image and interlacing these regions.

The reflective interior component of the STM may be made of any suitably reflective surface, with the proviso that double image reflections are to be avoided. Without intending any limitation, in particular embodiments, the reflective surfaces may be fabricated of stainless steel, aluminum, or any suitable reflective material which does not create double images. Typically, use of glass is avoided due to the generation of double reflections thereby. The housing 26 for the reflective surfaces 24 a, b, c, d may be made of any suitable material, such as metal, plastics, other polymers, and the like. In one embodiment, the housing 26 is molded as a unitary housing 26, of polymethylmethacrylate (PMMA) or any other suitable plastic or polymer.

Stereoscopic Images

Herein is described a technique to generate stereoscopic images using an STMIS as described. Broadly, the method comprises, for a specified region in a central view of an STM image (see FIG. 3), there is identified the corresponding regions in the left view and the right view of the image (as a non-limiting example, the ‘Right image’ and the ‘Left image’ shown in FIG. 3). Next, the images are interlaced, and the interlaced image can then be viewed with a pair of special glasses (shutter glasses or polarized glasses) on a 3D display panel designed for stereoscopic images. Such specialized glasses and 3D display panels are known in the art.

For this particular application the left view and the right view first require rectification. The accuracy of the rectification process relies on accurate identification of the central view, the left view and the right view. In the following we show how to accurately identify the bounding edges of these views and then how to perform the rectification process.

First, the bounding edges of the central view are identified via a focus/defocus process. A first image of a scene is acquired (see FIG. 4). Typically, bounding edges of the central view appear blurry if the scene is not close to the front end of the STM. This is because the focus is on the scene of which an image is being taken, not on the front end of the STM. To accurately identify the bounding edges of the central view, it is necessary to acquire a second image of the scene, but with the smallest camera iris this time. This second image will be exactly the same as the first image except now the scene is not as clear but the bounding edges of the central view in the second image are very clear and sharp (see FIG. 5). By clearly identifying the bounding edges of the central view in the second image, it is possible to compute the four corners of the central view in the second image.

These four corners of the second view in the second image correspond to the four corners of the central view in the first image. The coordinates of these corners are defined as (x₁,y₁), (x₂,y₂), (x₃,y₃), and (x₄,y₄) (see FIG. 6) with respect to the lower-left corner of the image, i.e., the lower-left corner is the origin of the coordinate system of the image.

Next job is identification of (x₅,y₅), (x₆,y₆), (x₇,y₇) and (x₈,y₈) (see FIG. 6). Without loss of generality, it is presumed that (x₁,y₁) and (x₂,y₂) lie on the same horizontal line. If this is not the case, the image must simply be rotated about the center of the central view for β degrees where β=tan⁻¹((y₂−y₁)/(x₂−x₁)) and do a clipping after the rotation to ensure the image is an orthogonal rectangle (see FIG. 7). A translation is also necessary if center of the new central view does not coincide with the center of the original image.

The following theorem is used for the rectification process:

THEOREM 1 If P=(X,Y,−l) is a point in the virtual central view corresponding to a given STM image and P′ is the corresponding point of P in the virtual right view, then the edge AP′ makes an angle of α degrees with the horizontal line y=Y and α is a function of Y

$\begin{matrix} {\alpha = {\tan^{- 1}\left( \frac{Y\; {\sin \left( {2\theta} \right)}}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}} \right)}} & (1) \end{matrix}$

PROOF Since tan α=|P′B|/|AB|, we need to find |P′B| and |AB| in order to compute α. By Theorem 1, we have

$P^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {X + {2\sigma_{r}\cos \; \theta}} \right)}{d + l - {2\sigma_{r}\sin \; \theta}},\frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{r}\sin \; \theta}},{- l}} \right)$

Hence,

$\begin{matrix} {{{P^{\prime}B}} = {\frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{r}\sin \; \theta}} - Y}} \\ {= \frac{{\left( {d + l} \right)Y} - {\left( {d + l} \right)Y} + {2Y\; \sigma_{r}\sin \; \theta}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{2{Y\left( {h - X} \right)}\cos \; \theta \; \sin \; \theta}{d + l - {2\left( {h - X} \right)\cos \; \theta \; \sin \; \theta}}} \end{matrix}$

On the other hand,

$\begin{matrix} {{{AB}} = {\frac{\left( {d + l} \right)\left( {X + {2\sigma_{r}\cos \; \theta}} \right)}{d + l - {2\sigma_{r}\sin \; \theta}} - h}} \\ {= \frac{{\left( {d + l} \right)\left( {X + {2\sigma_{r}\cos \; \theta}} \right)} - {h\left( {d + l} \right)} + {2h\; \sigma_{r}\sin \; \theta}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{{\left( {d + l} \right)\left( {X - h} \right)} + {2{\sigma_{r}\left( {{\left( {d + l} \right)\cos \; \theta} + {h\; \sin \; \theta}} \right)}}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{{\left( {d + l} \right)\left( {X - h} \right)} + {2\left( {h - X} \right)\cos \; {\theta \left( {{\left( {d + l} \right)\cos \; \theta} + {h\; \sin \; \theta}} \right)}}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{{\left( {d + l} \right)\left( {X - h} \right)} + {2\left( {d + l} \right)\left( {h - X} \right)\cos^{2}\theta} + {2\left( {h - X} \right)h\; \cos \; \theta \; \sin \; \theta}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{{\left( {d + l} \right)\left( {h - X} \right)\left( {{2\cos^{2}\theta} - 1} \right)} + {2\left( {h - X} \right)h\; \cos \; \theta \; \sin \; \theta}}{d + l - {2\sigma_{r}\sin \; \theta}}} \\ {= \frac{{\left( {d + l} \right)\left( {h - X} \right){\cos \left( {2\theta} \right)}} + {\left( {h - X} \right)h\; {\sin \left( {2\theta} \right)}}}{d + l - {2\sigma_{r}\sin \; \theta}}} \end{matrix}$

Therefore,

$\begin{matrix} {{\tan \; \alpha} = \frac{2{Y\left( {h - X} \right)}\cos \; \theta \; \sin \; \theta}{{\left( {d + l} \right)\left( {h - X} \right){\cos \left( {2\theta} \right)}} + {\left( {h - X} \right)h\; {\sin \left( {2\theta} \right)}}}} \\ {= \frac{Y\; {\sin \left( {2\theta} \right)}}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}}} \end{matrix}$

And the theorem is proved. Ξ

It is assumed that, after the steps of rotation, clipping and translation, the widths of the left view, the central view and the right view are m₃, m and m₂, respectively, and the heights of the lower view, the central view and the upper view are n₂, n and n₃, respectively (see FIG. 6). Hence, for the right view, the rectification process is to restore it into an image of dimension m₂×n. For the left view, the rectification is to restore it into an image of dimension m₃×n. We will show the rectification for the right view only. The rectification process for the left view is similar.

Let I_(R) be an image array of dimension m₂×n. The rectified right view is stored into I_(R). Another assumption is that the given STM image (after the rotation, clipping and translation steps) is stored in the image array I of dimension (m₃+m+m₂)×(n₂+n+n₃). Hence, the question to be answered is:

-   -   for J=0 to n−1     -   for i=0 to m₂−1     -   I_(R)(i,j)=?

One method for calculation is as follows:

First, for the given entry (i,j), its corresponding entry (M,N,−l) is found in the virtual right view of the virtual image plane. M and N are defined as follows:

$\begin{matrix} \left\{ \begin{matrix} {M = {{\left( {i + \frac{1}{2}} \right)\frac{2h}{m}} + h}} \\ {N = {{\left( {j + \frac{1}{2}} \right)\frac{2h}{n}} - h}} \end{matrix} \right. & (2) \end{matrix}$

Next is the step of finding the entry (X,N,−l) in the virtual central view such that

$\begin{matrix} {\frac{\left( {d + l} \right)\left\lbrack {X + {2\left( {h - X} \right)\cos^{2}\theta}} \right\rbrack}{d + l - {2\left( {h - X} \right)\cos \; \theta \; \sin \; \theta}} = M} & (3) \end{matrix}$

Such an X is defined as follows:

$\begin{matrix} {X = \frac{{\left( {d + l} \right)h\; {\cos \left( {2\theta} \right)}} + {\left( {d + l} \right)\left( {h - X} \right)} + {{Mh}\; {\sin \left( {2\theta} \right)}}}{{M\; {\sin \left( {2\theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\theta} \right)}}}} & (4) \end{matrix}$

Then based on Theorem 1, the corresponding point of (X,N,−l) in the virtual right view is computed as follows:

$\begin{matrix} {\left( {M,\overset{\_}{N},{- l}} \right) = \left( {M,\frac{\left( {d + l} \right)N}{d + l - {2\left( {h - X} \right)\cos \; \theta \; \sin \; \theta}},{- 1}} \right)} & (5) \end{matrix}$

Next, the corresponding location of (M, N,−l) in the right view of the STM image I is computed as follows:

(m₃+m+i,n₂+ j)   (6)

where

$\begin{matrix} {\overset{\_}{j} = {{\left( {\overset{\_}{N} + h} \right)\frac{n}{2h}} - \frac{1}{2}}} & (7) \end{matrix}$

By combining (7) with (5) and (4), we get the following expression for j:

$\begin{matrix} {\overset{\_}{j} = {{\left\lbrack {\frac{N\left\lbrack {{M\; {\sin \left( {2\theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\theta} \right)}}} \right\rbrack}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}} + h} \right\rbrack \frac{n}{2h}} - \frac{1}{2}}} & (8) \end{matrix}$

where M and N are defined in (5-2). j is typically a real number, not an integer.

Once we have the indices defined in (6) and the value of j defined in (8), we can compute I_(R)(i,j) as follows:

(a) if j=(n−1)/2 then I_(R)(i,j)=I(m₃+m+i,n₂+j)

(b) if j>(n−1)/2 and l≦ j<l+1 for some l≧j then

I _(R)(i,j)=( j−l)I(m ₃ +m+i,n ₂ +l+1)+(l+1− j )I(m ₃ +m+i,n ₂ +l)

(c) if j<(n−1)/2 and k−1< j≦k for some k≦j then

I _(R)(i,j)=( j+1−k)I(m+m+i,n ₂ +k)+(k− j )I(m ₃ +m+i,n ₂ +k−1)

An alternative method for computing j may be done via a shorter process. It can be seen that the right view of the STM image is similar to the virtual right view of the virtual image. Therefore, if Q=(i,j) and Q′=(i, j) in the right view of the STM image correspond to B=(M,N,−l) and P′=(M, N,−l) in the virtual right view, respectively, then the angle ∠P′ AB in FIG. 8 and the angle ∠Q′DQ in FIG. 9 must be the same. Consequently, by THEOREM 1, it is possible to compute the point Q′=(i, j) in the right view of the STM image by solving the following equation:

$\begin{matrix} {\frac{{Q^{\prime}Q}}{{DQ}} = {\tan \; \alpha}} & (9) \end{matrix}$

for Q′ where D=(−½,j). Note that in the right view of the STM image, it is D, not (0,j) (see FIG. 9), that corresponds to A in the virtual right view (see FIG. 8). Since the aspect ratio of the STM image is:

${{Aspect}\mspace{14mu} {ratio}} = {\frac{x}{y} = {\frac{2{h/m}}{2{h/n}} = \frac{n}{m}}}$

(9) can be written as

$\begin{matrix} {\frac{\overset{\_}{j} - j}{\left\lbrack {i - \left( {- \frac{1}{2}} \right)} \right\rbrack \frac{n}{m}} = {{\tan \; \alpha} = \frac{N\; {\sin \left( {2\theta} \right)}}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}}}} & (10) \end{matrix}$

From (2), we have

${i = {{\left( {M - h} \right)\frac{m}{2h}} - \frac{1}{2}}};{j = {{\left( {N + h} \right)\frac{n}{2h}} - \frac{1}{2}}}$

Hence, from (10) we have

$\begin{matrix} \begin{matrix} {\overset{\_}{j} = {{\left( {N + h} \right)\frac{n}{2h}} - \frac{1}{2} + {\frac{N\; {\sin \left( {2\theta} \right)}}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}}\left( {M - h} \right)\frac{m}{2h}\frac{n}{m}}}} \\ {= {{\left( {N + h + \frac{N\; {\sin \left( {2\theta} \right)}\left( {M - h} \right)}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}}} \right)\frac{n}{2h}} - \frac{1}{2}}} \\ {= {{\left( {\frac{N\left\lbrack {{M\; {\sin \left( {2\theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\theta} \right)}}} \right\rbrack}{{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {h\; {\sin \left( {2\theta} \right)}}} + h} \right)\frac{n}{2h}} - \frac{1}{2}}} \end{matrix} & (11) \end{matrix}$

(11) is exactly the same as (8).

The computation process of I_(R)(i,j) is the same as the one shown previously.

Once the left view and the right view of the STM image are rectified as described herein, the generation of stereoscopic images is relatively straightforward. For any specified region in the central view, the corresponding regions in the rectified left view and the rectified right view are identified, divided by 78% and interlaced. Next, the interlaced image is output to a display panel designed for stereoscopic images. Such panels are known in the art.

Consideration was given to the physical proportions of the STM, and to the relationship between the STM and the imager. Table 1 defines notations used subsequently.

TABLE 1 Nomenclature Notation Meaning 1 Length of the STM 2r × 2r Dimension of the rear end (adjacent to the camera lens) 2h × 2h Dimension of the front end 1 × 2r × 2h Dimension of each mirror (each mirror is of the shape of an

es trapezoid with 1, 2r and 2h being its height, top side length

ttom side length, respectively) d Distance between pinhole of the camera and center point of

 rear end θ Slope of the interior of the hollow tube (angle between the and the optical center of the tube) 2α Field of view (or, angle of view) of the camera φ Effective field of view of the camera

indicates data missing or illegible when filed

a. Parallel STM

First was the case that the interior slope of the STM is zero, i.e., θ=0. In this case, we have r=h and the mirrors form two pairs of parallel sets: (top mirror, bottom mirror) and (left mirror, right mirror). Each mirror is a rectangle of dimension 2r×l. We refer to this case as parallel STM.

Considering the situation of an STM with d>l, where EF, HG, FG and EH are the top views of the left mirror, the right mirror, the front end and the rear end, respectively (FIG. 9), the plane passing through the front end of the STM was defined as the projection plane or image plane. Any thing the real camera C can see (in the angular sector bounded by CF and CG) will be projected onto the image plane between F and G. Therefore, FG is also the top view of the scene image (central view). V_(l) and V_(r) are locations of the virtual cameras with respect to the left mirror and the right mirror, respectively. Anything the virtual camera V_(l) could see (in the angular sector bounded by V_(l)E and V_(l)F) was projected onto the image plane as the left view. KF is the top view of that image. Similarly, anything the virtual camera V_(r) can see (in the angular sector bounded by V_(r)H and V_(r)G) will be projected onto the image plane as the right view. GL′ is the top view of that image.

Points I, J, Y and Z play important roles here. They are the four vertices of the trinocular region IZJY. If a point is outside this region, it can be seen by the real camera C, but not by virtual camera V_(l) or V_(r), or both. Such a point will not appear in the left view or the right view, or both. Consequently, one will not be able to find one of the to corresponding points (or both) for such a point in the generation of a stereoscopic image or in the computation of the depth value. In general, to ensure enough information is obtained for stereoscopic image generation or depth computation, the scene to be shot by the real camera should be inside the trinocular region. Hence, a good STM should make the distance between I and J long enough and the width between Y and Z wide enough. These points can be computed as follows.

Let the distance between O and I be k and the distance between N and J be m. Since triangle V_(l)CI is similar to triangle EOI, we have

$\frac{2r}{r} = {\frac{d + k}{k}.}$

Hence, k=d.

To compute J, note that triangle V_(l)CJ is similar to triangle FNJ. Hence, we have

$\frac{2r}{r} = \frac{d + l + m}{m}$

or m=d+l. Therefore, the distance between I and J is 2l.

To compute Y, note that this is the intersection point of rays V_(l)F and V_(r)H which can be parameterized as follows:

L(t)=V _(l) +t(F−V _(l))t ∈ R

L ₁(s)=V _(r) +s(H−V _(r))s ∈ R

The intersection point is a point where L(t₁)=L₁(s₁) for some t₁ and s₁. By imposing a coordinate system on the STM with O as the origin, OH as the positive x-axis and OC as the positive z-axis, we have

$\begin{matrix} \begin{matrix} {{L\left( t_{1} \right)} = {V_{l} + {t_{1}\left( {F - V_{l}} \right)}}} \\ {= {\left( {{{- 2}r},0,d} \right) + {t_{1}\left\lbrack {\left( {{- r},0,{- l}} \right) - \left( {{{- 2}r},0,d} \right)} \right\rbrack}}} \\ {= \left( {{{{- 2}r} + {t_{1}r}},0,{d - {t_{1}\left( {d + l} \right)}}} \right)} \end{matrix} \\ {and} \\ \begin{matrix} {{L_{1}\left( s_{1} \right)} = {V_{r} + {s_{1}\left( {H - V_{r}} \right)}}} \\ {= {\left( {{2r},0,d} \right) + {s_{1}\left\lbrack {\left( {r,0,0} \right) - \left( {{2r},0,d} \right)} \right\rbrack}}} \\ {= \left( {{{2r} - {s_{1}r}},0,{d - {s_{1}d}}} \right)} \end{matrix} \end{matrix}$

For L(t₁) to be the same as L₁(s₁), we must have

−2r+t ₁ r=2r−s ₁ r

d−t ₁(d+l)=d−s ₁ d

Solving this system of linear equations, we get t₁=4d/(2d+l) and, consequently,

$\begin{matrix} {Y = {L\left( t_{1} \right)}} \\ {= \left( {{{{- 2}r} + \frac{4{rd}}{{2d} + l}},0,{d - \frac{4{d\left( {d + l} \right)}}{{2d} + l}}} \right)} \\ {= {\left( {\frac{{- 2}{rl}}{{2d} + l},0,\frac{- {d\left( {{2d} + {3l}} \right)}}{{2d} + l}} \right).}} \end{matrix}$

Using property of symmetry, we have

$Z = \left( {\frac{2{rl}}{{2d} + l},0,\frac{- {d\left( {{2d} + {3l}} \right)}}{{2d} + l}} \right)$

Hence, the width between Y and Z is 4rl(2d+l). Summarizing the above results, we have

I=(0,0,−d);

J=(0,0,−d−2l)

|IJ|=2l;

${{YZ}} = \frac{4{rl}}{{2d} + l}$

These are important results because they tell us how a parallel STM should be designed.

First, to ensure the trinocular region IZJY can be used for scene shooting as much as possible, point I should be inside the region GRQF (see FIG. 9) instead of the STM, i.e., I should be to the right of N. Since z-component of 1 is −d and z-component of N is −l, this means that d should be greater than l. However, one should not make d too large because large d (not even excessively) could cause FOV of the camera to cover too much extra space other than the STM itself such as the areas to between K and W, and X and L in FIG. 9. These areas do not contain information related to the scene and, therefore, are of no use to the 3D image generation process.

The distance between Y and Z and the locations of Y and Z actually are more critical in most of the applications because they determines if a scene can fit into the trinocular region IZJY. To ensure the widest part of the trinocular region can be used for the given scene, these points must be to the right of N, i.e.,

$\frac{- {d\left( {{2d} + {3l}} \right)}}{{2d} + l} < {{- l}\mspace{14mu} {or}\mspace{14mu} d} > {\frac{1}{2}.}$

An example with d>l/2 is shown in FIG. 10. Since d is smaller than l here, the apex of the trinocular region, I, is inside the STM while Y and Z are to the right of N. Actually it is easy to see that when l/2<d<l, we have

${2r} > \frac{4{rl}}{{2d} + l} > \frac{4r}{3}$

Hence, one can increase the distance between Y and Z (width of the trinocular region) by increasing the value of r (see FIG. 11 for an example). However, it should be pointed out that increasing the value of r would reduce the coverage of the STM by the FOV of the camera (see FIG. 11) and, consequently, reduce the size of the left view and the right view (actually the upper view and the lower view as well). Actually, if r satisfies the following condition

r≧(d+l)tan α

one will not get a left view or a right view at all because in such a ease 2α would be smaller than the effective FOV of the camera, φ.

Based on the above analysis, we can see that when the scene is close to the STM, one can use most of the trinocular region IZJY for scene shooting if l/2<d. One can increase the length of the trinocular region IZJY by increasing the length of the STM and increase its width by increasing the value of r. In general, a parallel STM was found suitable for imaging scenes close to the STM only.

b. Sloped STM

We next considered the case that the four interior sides of the STM make a positive angle θ with the optical center of the STM (and, therefore, the front of the STM closest to the image is larger than its rear closest to the camera). We refer to this case as sloped STM. An example is shown in FIG. 12. In the following, we will develop/show design criteria for STMs of this type.

We assume O is the origin of the 3D coordinate system, i.e., O=(0,0,0), the optical center of the STM is the z-axis with C being in the positive direction, and OH is the positive x-axis. Hence, we have C=(0,0,d), E=(−r,0,0). In FIG. 12, CD′ is perpendicular to OC and D′E′ is perpendicular to OE. Therefore, |E′|=|D′E′|tan θ=d tan θ and, consequently,

|CD′|=|EO|−|EE′|=r−d tan θ

Since |CD|=|CD′|cos θ, it follows that

D=(−Δ cos θ,0,d+Δ sin θ)

where Δ=r cos θ−d sin θ. We get V_(l) as follows:

V _(l)=(−2Δ cos θ,0,d+2Δ sin θ)

because the length of V_(l)C is twice the length of DC.

With the location of V_(l) available, we can now compute the locations of I, J Y and Z. This can be done using properties of similar triangles or ray intersection.

First note that triangle V_(l)C′I is similar to triangle EOI. Therefore we have

$\frac{{V_{t}C^{\prime}}}{{EO}} = {{\frac{{C^{\prime}I}}{{OI}}\mspace{14mu} {or}\mspace{14mu} \frac{2\Delta \; \cos \; \theta}{r}} = \frac{{2\Delta \; \sin \; \theta} + d + {- {{OI}}}}{{OI}}}$

where Δ=r cos θ−d sin θ. A simple algebra shows that

${{OI}} = \frac{r\left( {d + {2\Delta \; \sin \; \theta}} \right)}{{2\Delta \; \cos \; \theta} - r}$

Hence,

$I = \left( {0,0,{- \frac{r\left( {d + {2\Delta \; \sin \; \theta}} \right)}{{2\Delta \; \cos \; \theta} - r}}} \right)$

To compute J, note that J exists only if the rays V_(l)F and V_(r)G intersect. This would happen only if the distance between the virtual cameras and the z-axis is bigger than h, i.e., 2Δ cos θ>h. Otherwise, we have a trinocular region that is extended to infinity. Here we assume that 2Δ cos θ>h. In this case, triangle V_(l)C′J is similar to triangle FNJ. Hence, we have

$\frac{{V_{l}C^{\prime}}}{{F\; N}} = {{\frac{{C^{\prime}J}}{{N\; J}}\mspace{14mu} {or}\mspace{14mu} \frac{2{\Delta cos}\; \theta}{h}} = \frac{{2{\Delta sin}\; \theta} + d + l + {{N\; J}}}{{N\; J}}}$

where Δ=r cos θ−d sin θ. Again, a simple algebra gives us

${{N\; J}} = \frac{h\left( {d + l + {2{\Delta sin}\; \theta}} \right)}{{2{\Delta cos}\; \theta} - h}$ and $\begin{matrix} {{{O\; J}} = {l + {{N\; J}}}} \\ {= \frac{{2\; l\; {\Delta cos}\; \theta} + {dh} + {2\; h\; {\Delta sin}\; \theta}}{{2{\Delta cos}\; \theta} - h}} \\ {= {{- d} + {\frac{2{\Delta cos}\; {\theta \left( {d + l + {h\; \tan \; \theta}} \right)}}{{2{\Delta cos}\; \theta} - h}.}}} \end{matrix}$

Therefore, we have

$\begin{matrix} {J = \left( {0,0,{- \frac{{2\; l\; {\Delta cos}\; \theta} + {dh} + {2\; h\; {\Delta sin}\; \theta}}{{2{\Delta cos}\; \theta} - h}}} \right)} \\ {= \left( {0,0,{d - \frac{2{\Delta cos}\; {\theta \left( {d + l + {h\; \tan \; \theta}} \right)}}{{2{\Delta cos}\; \theta} - h}}} \right)} \end{matrix}$

Note that when θ=0, we have h=r and Δ=r. Hence, when θ=0, the above equations reduce to I=(0,0,−d) and J=(0,0,−d−2l), respectively.

Y is computed as the intersection points of the ray V_(l)F and ray V_(r)H. These rays can he parameterized as follows:

$\begin{matrix} {{L(t)} = {V_{l} + {t\left( {F - V_{l}} \right)}}} \\ {{= \begin{matrix} {\left( {{{- 2}\Delta \; \cos \; \theta},0,{d + {2{\Delta sin\theta}}}} \right) +} \\ {t\left\lbrack {\left( {{- h},0,{- l}} \right) - \left( {{{- 2}\Delta \; \cos \; \theta},0,{d + {2{\Delta sin\theta}}}} \right)} \right\rbrack} \end{matrix}}\;} \\ {= \begin{pmatrix} {{{{- 2}\Delta \; \cos \; \theta} + {t\left( {{2{\Delta cos}\; \theta} - h} \right)}},0,{d +}} \\ {{2{\Delta sin}\; \theta} - {t\left( {d + l + {2{\Delta sin}\; \theta}} \right)}} \end{pmatrix}} \end{matrix}$ and $\begin{matrix} {{L_{1}(s)} = {V_{r} + {s\left( {H - V_{r}} \right)}}} \\ {{= \begin{matrix} {\left( {{2\Delta \; \cos \; \theta},0,{d + {2{\Delta sin\theta}}}} \right) +} \\ {s\left\lbrack {\left( {r,0,0} \right) - \left( {{2\Delta \; \cos \; \theta},0,{d + {2{\Delta sin\theta}}}} \right)} \right\rbrack} \end{matrix}}\;} \\ {= \begin{pmatrix} {{{2\Delta \; \cos \; \theta} - {s\left( {{2{\Delta cos}\; \theta} - r} \right)}},0,{d +}} \\ {{2{\Delta sin}\; \theta} - {s\left( {d + {2{\Delta sin}\; \theta}} \right)}} \end{pmatrix}} \end{matrix}$

We need to find parameters t₁ and s₁ such that L(t₁)=L₁(s₁). To have L(t₁)=L₁(s₁), we must have

−2Δ cos θ+t ₁(2Δ cos θ−h)=2Δ cos θ−s ₁(2Δ cos θ−r)

d+2Δ sin θ−t ₁(d+l+2Δ sin θ)=d+2Δ sin θ−s ₁(d+2Δ sin θ)

or

t ₁(2Δ cos θ−h)+s ₁(2Δ cos θ−r)=4Δ cos θ

−t ₁(d+l+2Δ sin θ)+s ₁(d+2Δ sin θ)=0

Solving this system of linear equations, we first get

$s_{1} = \frac{t_{1}\left( {d + l + {2{\Delta sin}\; \theta}} \right)}{d + {2{\Delta sin}\; \theta}}$

and then

$t_{1} = \frac{4{\Delta cos}\; {\theta \left( {d + {2{\Delta sin}\; \theta}} \right)}}{\Delta_{1} + \Delta_{2}}$

where

Δ₁=(d+2Δ sin θ)(2Δ cos θ−h)

Δ₂=(2Δ cos θ−r)(d+l+2Δ sin θ)

Note that Δ₁ and Δ₂ are the areas of the rectangles V_(l)D′″E″E′″ and V_(l)D″F′F″ respectively. Hence, Y can be expressed as follows:

$\begin{matrix} {Y = {L\left( t_{1} \right)}} \\ {= {V_{l} + {t_{1}\left( {F - V_{l}} \right)}}} \\ {= \begin{pmatrix} {{{{- 2}{\Delta cos}\; \theta} + \frac{4{\Delta cos}\; {\theta\Delta}_{1}}{\Delta_{1} + \Delta_{2}}},0,{d + {2{\Delta sin}\; \theta} -}} \\ \frac{4{\Delta cos}\; {\theta \left( {d + {2{\Delta sin}\; \theta}} \right)}\left( {d + l + {2{\Delta sin}\; \theta}} \right)}{\Delta_{1} + \Delta_{2}} \end{pmatrix}} \end{matrix}$

where Δ₁ and Δ₂ are defined as above. With the expression of Y available, we know the width of the trinocular region is

${{YZ}} = {{2{{YA}}} = {{2{(Y)_{r}}} = \frac{4{\Delta \left( {\Delta_{2} - \Delta_{1}} \right)}\cos \; \theta}{\Delta_{1} + \Delta_{2}}}}$

and it occurs at

$(Y)_{z} = \frac{\left( {d + {2{\Delta sin}\; \theta}} \right)\left( {\Delta_{1} - \Delta_{2} - {2\Delta_{3}}} \right)}{\Delta_{1} + \Delta_{2}}$

where

Δ₃ =r(d+l+2Δ sin θ)

and Δ₁ and Δ₂ are defined as above. Δ₃ is the area of the rectangle D″C′NF′.

An important criterion in the design of a sloped STM is: how do we want the trinocular region of the sloped STM to be? For a parallel STM, the length of the trinocular region is always finite because the rays V_(l)F and V_(r)G always intersect and, therefore, the point J always exist. This is not the case for sloped STMs. Consider, for example, a sloped STM. In this case, ray V_(l)F and ray V_(r)G do not intersect in the negative z direction. Therefore, the trinocular region is unbounded on the right hand side. This means when using a sloped STM to shoot a picture, one has the advantage of handling scenes with large depth.

In the case of a bounded trinocular region, the distance between a virtual camera and the z-axis (optical center of the STM) must be bigger than h, i.e., 2Δ cos θ>h. To ensure this is true, first note that r, d and α are related in the following sense:

$\frac{r}{d} = {{\tan \; \alpha \mspace{14mu} {or}\mspace{14mu} d} = \frac{r}{\tan \; \alpha}}$

Therefore, for 2Δ cos θ>h, we must have

2(r cos θ−d sin θ)cos θ>r+l tan θ

or

$\frac{r}{l} > \frac{\sin \; \alpha \; \tan \; \theta}{\sin \left( {\alpha - {2\theta}} \right)}$

So, in this case, we expect

α−2θ>0 or α>2θ

It is easy to see that in this case we have

${{I\; J}} = \frac{{l\left( {2{\Delta cos}\; \theta} \right)}\left\lbrack {{\tan \; {\theta \left( {d + {2{\Delta sin}\; \theta}} \right)}} + {2{\Delta cos}\; \theta} - r} \right\rbrack}{\left( {{2{\Delta cos}\; \theta} - r} \right)\left( {{2{\Delta cos}\; \theta} - h} \right)}$

Hence, in this case, one can use the above equations to adjust the parameters r, d, θ and l to construct a trinocular region that would meet our requirements.

In the case of an unbounded trinocular region, the distance between a virtual camera and the z-axis (optical center of the STM) must be smaller than h, i.e., 2Δ cos θ<h. In this case one can still use the above equations to adjust the width and location of the trinocular region. However, since the relationship between r and d is fixed, one should mainly use the other two parameters (θ,l) to adjust the shape and location of the trinocular region. Actually the best parameter to use is l because adjusting this parameter will not affect the size of the left view and the right view much while adjusting the parameter θ will.

Image-Plus-Depth

A. Computing Corresponding Points

a. Imager (Camera) Calibration

For image reconstruction it was first necessary to effect camera calibration to obtain camera parameters for the reconstruction process. The calibration technique described follows a prior art approach [Z. Zhang. A flexible new technique for camera calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000].

A 2D and a 3D point were denoted by m=[u,v]^(T) and M=[x,y,z]^(T), respectively. They can also be represented in homogeneous coordinates as {tilde over (m)}=[u,v,1]^(T) and {tilde over (M)}=[x,y,z,1]^(T), respectively. The camera was considered as a pinhole, so the relationship between a 3D point M and its projected image in was given by

s{tilde over (m)}=A[R t]{tilde over (M)},   (12)

where s is a scaling factor, [R,t] is the rotation and translation matrix which relates the world coordinate system with the camera coordinate system. R and t are called the extrinsic parameters. A, called the camera intrinsic matrix, is given by

$A = \begin{bmatrix} \alpha & \gamma & u_{0} \\ 0 & \beta & v_{0} \\ 0 & 0 & 1 \end{bmatrix}$

with (u₀,v₀) being coordinates of the principal point. The principle point is the intersection of the optical axis and the image plane. α and β are scaling factors in u and v axes of the image plane and γ is the parameter describing the skewness of the two image axes. Note that α and β are related to the focal length f.

In the calibration process, the camera needs to observe a planar pattern shown in a few different orientations. The plane in which the pattern lies is called the model plane, set to be the Z=0 plane of the world coordinate system. The i^(th) column of the rotation matrix R is denoted by r_(l). From (12), we have

${s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix}} = {{{A\left\lbrack {r_{t}r_{2}r_{3}t} \right\rbrack}\begin{bmatrix} X \\ Y \\ 0 \\ 1 \end{bmatrix}} = {{A\left\lbrack {r_{1}r_{2}t} \right\rbrack}\begin{bmatrix} X \\ Y \\ 1 \end{bmatrix}}}$

i.e., a point M in the model plane can be expressed as M=[X,Y]^(T) since Z is always 0. In turn, M=[X,Y,l]^(T). Therefore, a model point M and its image in are related by a homography H:

s{tilde over (m)}=H {tilde over (M)} with H=A[r₁,r₂,t].   (13)

The 3×3 matrix H is defined up to a scaling factor.

The homography, denoted H=[h₁,h₂,h₃], was estimated with an image of the model plane. Note that from (13), we have

[h₁ h₂ h₃]=λA[r₁ r₂ t],

where λ is a scaling factor. Using the property that r₁ and r₂ are orthonormal, we have

h ₁ ^(T) A ^(−T) A ⁻¹ h ₂=0   (14)

h ₁ ^(T) A ^(−T) A ⁻¹ h ₁ =h ₂ ^(T) A ^(−T) A ⁻¹ h ₂.   (15)

These are the two basic constraints on the intrinsic parameters, given one homography. Because a homography has 8 degrees of freedom and there are 6 extrinsic parameters (3 for rotation and 3 for translation), we can only obtain 2 constraints on the intrinsic parameters.

Lens distortion was ignored to make the computation simpler.

It is easy to see the inverse of A is

$\begin{matrix} {{A^{- 1} = \begin{bmatrix} {1/\alpha} & {{- \gamma}/({\alpha\beta})} & {\left( {{{- u_{0}}\beta} + {\gamma \; v_{0}}} \right)/({\alpha\beta})} \\ 0 & {1/\beta} & {{- v_{0}}/\beta} \\ 0 & 0 & 1 \end{bmatrix}}{Let}\begin{matrix} {B = {A^{- T}A^{- 1}}} \\ {= \begin{bmatrix} B_{11} & B_{12} & B_{13} \\ B_{21} & B_{22} & B_{23} \\ B_{31} & B_{32} & B_{33} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{1}{\alpha^{2}} & \frac{- \gamma}{\alpha^{2}\beta} & \frac{{\gamma \; v_{0}} - {u_{0}\beta}}{\alpha^{2}\beta} \\ \frac{- \gamma}{\alpha^{2}\beta} & {\frac{\gamma^{2}}{\alpha^{2}\beta^{2}} + \frac{1}{\beta^{2}}} & {\frac{- {\gamma \left( {{\gamma \; v_{0}} - {u_{0}\beta}} \right)}}{\alpha^{2}\beta^{2}} - \frac{v_{0}}{\beta^{2}}} \\ \frac{{\gamma \; v_{0}} - {u_{0}\beta}}{\alpha^{2}\beta} & {\frac{- {\gamma \left( {{\gamma \; v_{0}} - {u_{0}\beta}} \right)}}{\alpha^{2}\beta^{2}} - \frac{v_{0}}{\beta^{2}}} & {\frac{\left( {{\gamma \; v_{0}} - {u_{0}\beta}} \right)^{2}}{\alpha^{2}\beta^{2}} + \frac{v_{0}^{2}}{\beta^{2}} + 1} \end{bmatrix}} \end{matrix}} & (16) \end{matrix}$

Note that B is symmetric. We define b, a 6D vector, as follows:

b=[B₁₁, B₁₂, B₂₂, B₁₃, B₂₃, B₃₃]^(T).   (17)

Recall that h_(i) denotes the i^(th) column vector of H. Then we have

h_(i) ^(T)Bh_(i)=v_(ii) ^(T)b   (18)

with

v _(ij) =[h _(1i) h _(1j) ,h _(1i) h _(2j) +h _(2i) h _(1j) ,h _(2i) h _(2j) ,h _(3i) h _(1j) +h _(1i) h _(3j) ,h _(3i) h _(2j) +h _(2i) h _(3j) ,h _(3i) h _(3j)]^(T)

Therefore, (14) and (15) can be rewritten as:

$\begin{matrix} {{\begin{bmatrix} v_{12}^{T} \\ \left( {v_{11} - v_{22}} \right)^{T} \end{bmatrix}b} = 0.} & (19) \end{matrix}$

If we have n images of the model plane, by stacking n such equations as (19) we have

Vb=0,   (20)

where V is a 2n×6 matrix. If n≧3, we will have in general a unique solution b defined up to a scaling factor. Usually we take 7-15 pictures of the pattern and use around 10 images for calibration to obtain a more accurate result. The solution to (20) is the eigenvector of V^(T)V associated with the smallest eigenvalue.

Once b is estimated, A can be computed as follows:

α=√{square root over (1/B ₁₁)}

β=1/√{square root over (B ₂₂−(αB ₁₂)²)}

γ=−α² βB ₁₂

ν₀=√{square root over (β²(B ₃₃−(αB ₁₃)²−1))}

u ₀=(γv ₀ −α ² βB ₁₃)/β.

Once A is computed, we can compute the extrinsic parameters for each image:

r ₁ =λA ⁻¹ h ₁;

r ₂ =λA ⁻¹ h ₂;

r ₃ =r ₁ ×r ₂;

t=λA ⁻¹ h ₃

Here,

$\lambda = {\frac{1}{A^{- 1}h_{1}} = {\frac{1}{A^{- 1}h_{2}}.}}$

Since the virtual cameras had the same intrinsic parameters as the real camera, only one camera calibration was needed. Correspondences were selected by using a feature point based matching process. Surprisingly, it was found that building a 3D representation did not require calculating the depth of all pixels.

b. Obtaining Correspondence Between Views

With the camera parameters being known, the only challenge left was to find the correspondence between the views. Unfortunately, reliable identification of corresponding points between different views is a very difficult problem, especially with objects having solid colors or specular reflection, such as human teeth. To address this problem, in addition to the classic vision matching technique such as cross-correlation, feature points were also used in the matching process to achieve better results. Specular reflection was removed from each point of the given image, and intensity of each point in the left view, right view, upper view and lower view was divided by 78%.

The Canny edge detection algorithm [Canny, J., A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8:679-714, 1986] is considered in the art to be an optimal edge detector. The purpose of the method is to detect edges with noise suppressed at the same time. The Canny Operator has the following goals:

(a) Good Detection: the ability to locate and mark all real edges.

(b) Good Localization: minimal distance between the detected edge and real edge.

(c) Clear Response: only one response per edge.

The approach is based on convoluting the image function with Gaussian operators and their derivatives. This is a multi-step procedure.

The Canny Operator sets two thresholds to detect the edge points. The six steps are as follows:

Step 1. Noise Reduction

First, the image is convolved with a discrete Gaussian filter to eliminate noise. The discrete Gaussian filter is typically a 5×5 matrix of the following form (for σ=1.4):

$G = {\frac{1}{159}\begin{bmatrix} 2 & 4 & 5 & 4 & 2 \\ 4 & 9 & 12 & 9 & 4 \\ 5 & 12 & 15 & 12 & 5 \\ 4 & 9 & 12 & 9 & 4 \\ 2 & 4 & 5 & 4 & 2 \end{bmatrix}}$

If f(m,n) is the given image, then the smoothed image F(m,n) is computed as follows:

${F\left( {m,n} \right)} = {{{G\left( {m,n} \right)}*{f\left( {m,n} \right)}} = {\sum\limits_{i = 0}^{4}{\sum\limits_{j = 0}^{4}{{G\left( {i,j} \right)}{f\left( {{m - i},{n - j}} \right)}}}}}$

Step 2. Finding the Intensity Gradient of the Image

This step finds the edge strength by taking the gradient of the image. This is done by performing convolution of F(m,n) with G_(x) and G_(y), respectively,

E _(x)(m,n)=G _(x) *F(m,n);

E _(y)(m,n)=G _(y) *F(m,n)

where

$G_{x} = \begin{bmatrix} {- 1} & 0 & 1 \\ {- 2} & 0 & 2 \\ {- 1} & 0 & 1 \end{bmatrix}$ $G_{y} = \begin{bmatrix} 1 & 2 & 1 \\ 0 & 0 & 0 \\ {- 1} & {- 2} & {- 1} \end{bmatrix}$

and then computing the gradient

A(m,n)=√{square root over (E _(x)(m,n))²+(E _(y)(m,n))²)}{square root over (E _(x)(m,n))²+(E _(y)(m,n))²)}

Step 3. Finding the Edge Direction

This step is trivial once gradients in the X and Y directions are known. The direction is

${\theta \left( {m,n} \right)} = {\tan^{- 1}\left( \frac{E_{y}\left( {m,n} \right)}{E_{x}\left( {m,n} \right)} \right)}$

However, we will generate an error whenever E_(x) is zero. So in the code, there has to be a restriction set whenever this takes place. Whenever E_(x) is zero, the edge direction is set to 90 degrees or 0 degrees, depending on what value E_(y) is equal to. If E_(y)=0, the edge direction is set to 0. Otherwise, it is set to 90.

Step 4. Rounding the Edge Directions

This step relates each edge direction to a direction that can be traced in an image. Note that there are only four possible directions for each pixel: 0 degrees, 45 degrees, 90 degrees, or 135 degrees. So edge direction of each pixel has to be resolved into one of these four directions, depending on which direction it is closest to. An edge direction that is between 0 and 22.5 or 157.5 and 180 degrees is set to 0 degrees. An edge direction that is between 22.5 and 67.5 is set to 45 degrees. An edge direction that is between 67.5 and 112.5 degrees is set to 90 degrees. An edge direction that is between 112.5 and 157.5 degrees is set to 135 degrees.

Step 5. Non-Maximum Suppression

This step performs a search to determine if the gradient magnitude assumes a local maximum in the gradient direction. So, for example,

-   -   if the rounded angle is zero degrees the point will be         considered to be on the edge if its intensity is greater than         the intensities in the north and south directions,     -   if the rounded angle is 90 degrees the point will be considered         to be on the edge if its intensity is greater than the         intensities in the west and east directions,     -   if the rounded angle is 135 degrees the point will be considered         to be on the edge if its intensity is greater than the         intensities in the north east and south west directions.     -   if the rounded angle is 45 degrees the point will be considered         to be on the edge if its intensity is greater than the         intensities in the north west and south east directions.

This is worked out by passing a 3×3 grid over the intensity map.

This step produces a set of edge points in the form of a binary image by suppressing any pixel value (setting it to 0) that is not considered to be an edge.

Step 6. Edge Tracing Through Hysteresis Thresholding

This step uses thresholding with hysteresis to trace edges. Thresholding with hysteresis requires 2 thresholds, high and low. The high threshold is used to select a start point of an edge and the low threshold is used to trace an edge from a start point. Points of the traced edges are then used as feature points subsequently to their corresponding points.

The above process was improved to obtain edges with sub-pixel accuracy by using second-order and third-order derivatives computed from a scale-space representation in the non-maximum suppression step.

Each view (area) of the grid image of FIG. 3 was labeled (FIG. 9). Area 0 was the real image; areas 1, 2, 3 and 4 were images reflected once by the upper, left, right and lower mirrors, respectively; areas 5, 6, 7 and 8 are the images reflected twice by the minors. The geometry of these reflections will be discussed below. On scanline L, there were two points A and B, with their corresponding points in area 3 being A1 and B1, respectively, and A2 and B2 in area 2, respectively. A3 and A4 are the corresponding point of A in areas 4 and 1. The corresponding points in our system satisfy the following constraints:

(1). Ordering Constraint: For opaque surfaces the order of neighboring correspondences on the corresponding epipolar line is always reversed. For example, if the indices of A and B on the scanline L satisfy the condition: (A)_(x)>(B)_(x), then we must have (B1)_(x)>(A1)_(x) and (B2)_(x)>(A2)_(x). This is because the mirror reflection reverses the image.

(2). Disparity Limit: The search band is restricted along the epipolar line because the observed scene has only a limited depth range. For example, if we are looking for the corresponding point of A in area 2, we don't need to search the entire scanline in area 2, we only need to search pixels in a certain threshold depending on the depth range.

(3). Variance limit: The differences of the depths computed using the corresponding points in the adjacent areas should be less than a threshold. For example, A1, A2, A3, A4 each can be used as a corresponding point of A and to compute a depth of A. We compute the variances of the four depths and they must be smaller than a threshold. Otherwise at least one of the depths is wrong.

After feature point determination, correspondences of these points were found using stereo matching approaches. Two intensity based approaches for stereo matching were considered:

Normalized cross-correlation [J. P. Lewis, “Fast Template Matching”, Vision Interface, p. 120-123, 1995] is an effective and simple method to measure similarity. In our application, the reflected images have reduced intensity values than the central view because of the non-perfect reflection factors of the mirrors. But normalized cross-correlation is invariant to linear brightness and contrast variations. This approach provided good matching results for our feature points.

The use of cross-correlation for template matching was motivated by squared Euclidean distance:

${d_{f,g}^{2}\left( {x,y} \right)} = {\sum\limits_{i,j}\left\lbrack {{f\left( {i,j} \right)} - {g\left( {{i - x},{j - y}} \right)}} \right\rbrack^{2}}$

where f is the source image in the region and the sum is over i,j under the region of destination image g positioned at (x,y).

Here we expand d²:

d_(f, g)²(x, y) = ∑⌊f²(i, j) − 2f(i, j)g(i − x, j − y) + g²(i − x, j − y)⌋

The term

∑g²(i − x, j − y)

is a constant. If the term

∑f²(i, j)

is approximately a

constant then the remaining cross-correlation term

$\begin{matrix} {{c\left( {x,y} \right)} = {\sum\limits_{i,j}{{f\left( {i,j} \right)}{g\left( {{i - x},{j - y}} \right)}}}} & (21) \end{matrix}$

is a measure of the similarity between the source image and the destination image.

Although (21) is a good measure, there are several disadvantages to use it for matching:

1). If the image energy

∑f²(i, j)

varies with position, matching using (21) can fail. For example, the correlation between the destination image and an exactly matching region in the source image may be less than the correlation between the destination image and a bright spot.

2). The range of c(x,y) is dependent on the size of the region.

3). Equation (6-10) is not invariant to changes in image amplitude such as those caused by changing lighting conditions across the image sequence.

The correlation coefficient overcomes these difficulties by normalizing the image and feature vectors to unit length, yielding a cosine-like correlation coefficient:

$\begin{matrix} {{N\left( {x,y} \right)} = \frac{\sum{\left\lfloor {{f\left( {i,j} \right)} - f_{x,y}} \right\rfloor \left\lbrack {{g\left( {{i - x},{j - y}} \right)} - t} \right\rbrack}}{\left\lbrack {\sum{\left\lbrack {{f\left( {i,j} \right)} - f_{x,y}} \right\rbrack^{2}{\sum\left\lbrack {{g\left( {{i - x},{j - y}} \right)} - t} \right\rbrack^{2}}}} \right\rbrack^{1/2}}} & (22) \end{matrix}$

where t is mean of the destination image in the region and f_(x,y) is mean of f(i,j) in the region under the feature. (22) is what we referred to as the normalized cross-correlation.

The corresponding points in the source image and the destination image did not lie on the same scanline, but satisfied certain condition. The intensity profiles from the corresponding segments of the image pair differed only by a horizontal shift and a local foreshortening. The similarity of the image pair was continuous, and therefore an optimization process was considered suitable. A prior art attempt to match parallel stereo images using simulated annealing [Barnard, S. T. (1987), Stereo Matching by Hierarchical, Microcanonical Annealing, Int. Joint Conf. on Artificial Intelligence, Milan, Italy, pp. 832-835] defined an energy function as:

E _(ij) =|I _(L)(i,j)−I _(R)(i,j)+D(i,j)|+λ|ΔD(i,j)|

where I_(L)(i,j) denotes the intensity value of the source image at (i,j), and I_(R)(i,k) denotes the intensity value of the destination image at the same row but at the k-th column; D(i,j) is the disparity value (or horizontal shift in this case) at the ij-position of the source image. So this was a constrained optimization problem in which the only constraint being used is a minimum change of disparity values D(i,j).

c. Distance Between Imager (Camera) and STM

A parameter that was important both in the design of an STM and in the 3D image computation is d, the distance between the pinhole of the camera and the STM. This distance was also needed in the computation of the locations of all virtual cameras. In practice, typically the bounding planes of a camera field of view (FOV) do not automatically pass through the boundary edges of the device rear because of hardware restrictions. Thus, it is necessary to compute the effective d. Two situations were considered: FOV of camera covers part of STM only or FOV of camera covers more than the entire STM.

If the camera FOV of the camera does not cover the entire STM, but only a portion of it, the bounding planes of the camera's FOV do not pass through the boundary edges of the STM's rear end, but intersect the interior of the STM (see FIG. 11). In FIG. 11, 2α is the FOV of the camera and Φ is the FOV of a virtual camera. E′ and H′ are the intersection points of the bounding planes of the Camera's FOV with (the horizontal cross-section of) the interior of the STM. O′ is the intersection point of E′H′ with the optical center of the STM. In this case, the vertical plane determined by E′H′ will be considered as the effective rear end of the STM and O′ is the center of the effective rear end of the STM. Hence, we need to compute the distance between C and O′ and the distance between O′ and N. These distances, denoted d′ and l′, are called the effective distance between the camera and the STM and the effective length of the STM.

First was the step of determination of the distance between U and F. This is the horizontal length of the virtual left view in the virtual image plane. Given an image shot with this STMIS configuration, if the horizontal resolutions of the central view and the left view are m and m_(l), respectively, then since the length of the virtual central view is 2h, it follows that the horizontal dimension of each virtual pixel in the virtual central view is 2h/m. There are m_(l) virtual pixels between U and F. Therefore, the distance between U and F is

$t = {\frac{2h}{m}m_{l}}$

With α, t and h known, it was possible to compute L, the distance between the camera and the front end of the STM, and d, the distance between the camera and the real rear end of the STM, as follows:

${L = \frac{t + h}{\tan \; \alpha}};$ d=L−l

Once we have d, we can compute the distance between O and I, and the distance between E and I:

|OI|=d tan α;

|EI|=r−|OI|

Using property of similar triangles, we have

$\frac{{DE}^{\prime}}{l^{\prime}} = {\frac{{EE}^{\prime}}{{E^{\prime}F}} = \frac{{EI}}{t}}$

Hence,

${{DE}^{\prime}} = {l^{\prime}\frac{{EI}}{t}}$

Note that |DE′|+l′=l or l′=l−|DE′|, the above equation can be expressed as

${{DE}^{\prime}} = {{\left( {l - {{DE}^{\prime}}} \right)\frac{{EI}}{t}} = {{\frac{l}{t}{{EI}}} - {{{DE}^{\prime}}\frac{{EI}}{t}}}}$

Consequently,

${{DE}^{\prime}} = {\frac{{EI}}{t + {{EI}}}l}$

And therefore,

d′=d+|DE′|  (23)

(23) includes the ideal case as a special case when |DE′| equals zero.

The FOV of the camera may cover not only the entire STM, but also some extra space. In this situation, bounding planes of the FOV do not intersect the rear end or the interior of the STM, but an extension of the STM (see FIG. 12). In FIG. 12, 2α is the FOV of the camera, E′ and H′ are the intersection points of the bounding planes of the camera's FOV with (the horizontal cross-section of) an extension of the STM. In this case since the left view (corresponding to region between M and F) contains information not related to the scene, we will consider the effective left view (corresponding to region between U and F) only. Hence, we need to compute the distance between C and O, instead of C and O′. We also need to compute s, horizontal dimension of the effective left view. In FIG. 12, Π was called the effective FOV of the camera.

Given an image shot with this STMIS configuration, let the horizontal resolutions of the central view and the left view again be m and m_(l), respectively. Using a similar approach as above, we can again compute the horizontal dimension of the virtual left view (between M and F) as

t=(2h/m)m _(l).

With α, t and h known to us, we can compute L, the distance between the camera and the front end of the STM as follows:

$L = {\frac{t + h}{\tan \; \alpha}.}$

Hence,

d=L−l.   (24)

With d available to us, we can compute the effective FOV as follows

$\Pi = {\tan^{- 1}\left( \frac{r}{d} \right)}$

Since

${\tan \; \Pi} = \frac{s + h}{L}$

Consequently,

s=−h+L tan Π.   (25)

In the latter case, if the left edge of the effective left view between U and F is not easy to identify, one can consider a smaller effective left view. In one example, instead of using the angle Π as the effective FOV, a smaller angle such as Σ (FIG. 7) was used as the effective FOV. The choice of the angle Σ (and, hence, the point V) is not unique, it basically depends on if it is easy to create an artificial left edge through V for the smaller effective left view. In this case, like in case 2, one needs to compute the parameters L, d, Π and s first, then compute u, l″, d″ and r″. u is the horizontal dimension of the smaller effective left view, and l″, d″ and r″ are effective values of l, d and r, respectively.

Since Σ and L are known to us, by using the fact that tan Σ=(u+h)/L we have immediately that

u=L tan Σ−h

and, consequently, V was known.

To compute l″, note that triangle VE″J is similar to triangle VCN. Hence, we have

$\frac{u + h}{u + v} = \frac{L}{l^{''}}$

where v is the distance between F and J. On the other hand, since tan θ=v/l″, or v=l″ tan θ, we can solve the above equation with this information to get l″ as follows:

$l^{''} = {\frac{Lu}{u + h - {L\; \tan \; \theta}}.}$

But then d″ and r″ are trivial:

d″=L−l″ and r″=d″ tan Σ.

It was also necessary to determine the location of the pinhole (nodal point) of the camera, C, using a pan head on top of a tripod. This was done using a known method [http://www.4directions.org/resources/features/qtyr_tutorial/NodalPoint.htm].

d. Depth Computation

Information obtained from the left view, the right view, the upper view and the bottom view was used to compute depth for each point of the central view of an STM image. This was possible because virtual cameras for these views can see the object point that projects to the given image point. Instead of the typical, two-stage computation process, i.e., computing the corresponding point and then the depth, the technique presented herein computes the corresponding point and the depth at the same time.

Given a point A in the central view of an STM image, let P₁ be its corresponding point in the virtual central view. It was assumed that the scene shot by the camera was inside the trinocular region of the STM. For a trinocular region with a J-point, the scene must be before the J-point to avoid losing information. If the trinocular region does not have a J-point, then the scene must be before an artificial J-point defined as follows

J=(0,0,(I)_(z)+λ[(Y)_(z)−(I)_(z)])

where (I)_(z) and (Y)_(z) are defined in (3-7) and (3-13), respectively, and λ is a constant between 2 and 4. This setting was to avoid processing an infinite array in the corresponding point computing process. Since the existence of a J-point is characterized by the value of 2Δ cos θ−h, one can combine (3-8) with the above definition to define a general J-point as follows:

$\begin{matrix} \begin{matrix} {{J = \left( {0,0,{d - \frac{2\Delta \; \cos \; {\theta \left( {d + l + {h\; \tan \; \theta}} \right)}}{{2\Delta \; \cos \; \theta} - h}}} \right)},{{{if}\mspace{14mu} 2\Delta \; \cos \; \theta} > h}} \\ {{= \left( {0,0,\frac{\Delta_{1}\left\lbrack {{2{\lambda\Delta}\; \cos \; {\theta \left( {\Delta_{1} - \Delta_{2}} \right)}} - {r\left( {\Delta_{1} + \Delta_{2}} \right)}} \right\rbrack}{\left( {{2\Delta \; \cos \; \theta} - h} \right)\left( {{2\Delta \; \cos \; \theta} - r} \right)\left( {\Delta_{1} + \Delta_{2}} \right)}} \right)},{{otherwise}.}} \end{matrix} & (26) \end{matrix}$

where Δ₁ and Δ₂ were defined as above, respectively. Therefore, if A is the image of a point P in the scene, then P must be a point between P₁ and P₂ where P₂ is the intersection point of the ray CP₁ with the J-plane (the plane that is perpendicular to the optical center (−z-axis) of the STM at the general J-point). If we know the 3D location of P then we know the depth of A. Unfortunately, with the central view alone, this is not possible because, for camera C, the entire line segment P₁P₂ is mapped to one point and, therefore, A can be the image of any point between P₁ and P₂. But this is not the case for the virtual cameras.

Consider, for instance, virtual camera V_(r) (FIG. 12). Virtual camera V_(r) can see all the points of the line segment P₁P₂. Therefore, for each point of P₁P₂ there is a corresponding point in the virtual right view. If P₁′ and P₂′ are the corresponding points of P₁ and P₂ in the virtual right view, respectively, then the corresponding point of P must be a point between P₁′ and P₂′. If P′ in FIG. 13 is the corresponding point of P between P₁′ and P₂′ then by following a simple inverse mapping process, we can find the location of P immediately and, consequently, the depth of A.

There are cases where the corresponding points can not be found in some views. Consider the example shown in FIG. 14. In this case, A is the image of the scene point P. However, since virtual camera V_(r) can not see any points beyond P₃, P will not be projected to the virtual right view. Hence, in this case, constructing a reflection of P₁P₂ with respect to the mirror GH makes no sense at all. One needs to construct a reflection of P₁P₃ instead if P is a point between P₁ and P₃ (see FIG. 13). In the following, we show how to compute P₁ and P₂, P₁′ and P₂′, and then P′. In some cases, such as the one shown in FIG. 14, we will also compute P₃.

If the coordinates of A are (x,y), 0≦x≦m−1, 0≦y≦n−1, where in m×n is the resolution of the central view, then coordinates of P₁ would be (X,Y,−l) where

$X = {{{\left( {x - \frac{m}{2}} \right)\frac{2h}{m}} + \frac{h}{m}} = {{\left( {x + \frac{1}{2}} \right)\frac{2h}{m}} - h}}$ $Y = {{{\left( {y - \frac{n}{2}} \right)\frac{2h}{n}} + \frac{h}{n}} = {{\left( {y + \frac{1}{2}} \right)\frac{2h}{n}} - h}}$

P₂ can be computed as follows.

In FIG. 13, the ray CP₁ can be parameterized as follows:

L(t)=C+t(P ₁ −C)=(tX,tY,d−t(d+l))

where C=(0,0,d) is the location of the camera. To compute P₂ we need to find a parameter t₂ such that z-component of L(t₂) is the same as the z-component of J, i.e.,

$\begin{matrix} {{{d - {t_{2}\left( {d + l} \right)}} = {d - \frac{2\Delta \; \cos \; {\theta \left( {d + l + {h\; \tan \; \theta}} \right)}}{{2\Delta \; \cos \; \theta} - h}}},{{{if}\mspace{14mu} 2\Delta \; \cos \; \theta} > h}} \\ {{= \frac{\Delta_{1}\left\lbrack {{2{\lambda\Delta}\; \cos \; {\theta \left( {\Delta_{1} - \Delta_{2}} \right)}} - {r\left( {\Delta_{1} + \Delta_{2}} \right)}} \right\rbrack}{\left( {{2\Delta \; \cos \; \theta} - h} \right)\left( {{2\Delta \; \cos \; \theta} - r} \right)\left( {\Delta_{1} + \Delta_{2}} \right)}},{otherwise}} \end{matrix}$

and then set P₂=L(t₂). Solving the above equation we get

$\begin{matrix} \begin{matrix} {t_{2} = {{{\frac{2\Delta \; \cos \; {\theta \left( {d + l + {h\; \tan \; \theta}} \right)}}{\left( {l + d} \right)\left( {{2\Delta \; \cos \; \theta} - h} \right)}.\mspace{14mu} {if}}\mspace{14mu} 2\Delta \; \cos \; \theta} > h}} \\ {{= \frac{2\Delta \; \cos \; {\theta \begin{bmatrix} {{\left( {d + {r\; \tan \; \theta}} \right)\left( {\Delta_{1} + \Delta_{2}} \right)} -} \\ {{\lambda \left( {d + {2\Delta \; \sin \; \theta}} \right)}\left( {\Delta_{1} - \Delta_{2}} \right)} \end{bmatrix}}}{\left( {d + l} \right)\left( {{2\Delta \; \cos \; \theta} - r} \right)\left( {\Delta_{1} + \Delta_{2}} \right)}},{otherwise}} \end{matrix} & (27) \end{matrix}$

Hence,

P ₂ =C+t ₂(P ₁ −C)=(t ₂ X,t ₂ Y,d−t ₂(d+l))

where t₂ is defined in (27). Note that t₂>2 if θ>0 in both cases.

However, there are occasions where computing P₂ is not necessary but rather computing P₃ is needed. In the following, we show how to compute P₃ for one case. The other cases can be done similarly.

Note that P₃ is the intersection point of the ray CP₁ with the plane that passes through the virtual camera V_(r)=(2Δ cos θ,0,d+2Δ sin θ) and the two front corners of the right side mirror, (h,h,−l) and (h,−h,−l). The normal of that plane is (−d−l−2Δ sin θ,0,−h+2Δ cos θ). Therefore, to find P₃, we need to find a t₃ such that L(t₃)−(h,0,−l) is perpendicular to (−d−l−2Δ sin θ,0,−h+2Δ cos θ). We have

L(t ₃)−(h,0,−l)=(t ₃ X−h,t ₃ Y,(d+l)(1−t ₃))

To satisfy the condition (L(t₃)−(h,0,−l)·(−d−l−2Δ sin θ,0,−h+2Δ cos θ)=0, t₃ must be equal to

$\begin{matrix} {t_{3} = \frac{2{\Delta \left( {{h\; \sin \; \theta} + {d\; \cos \; \theta} + {l\; \cos \; \theta}} \right)}}{{X\left( {d + l + {2\Delta \; \sin \; \theta}} \right)} + {\left( {d + l} \right)\left( {{2\Delta \; \cos \; \theta} - h} \right)}}} & (28) \end{matrix}$

And we have P₃ as

P ₃=(t ₃ X,t ₃ Y,d−t ₃(d+l)).

In deciding when P₃ should be computed, if 2Δ cos θ>h compute P₃ when X≠0.

If 2Δ cos θ<h, compute P₃ when |X|> X where

${\overset{\_}{X} = \frac{\left( {d + l} \right)\left( {d + l + {2\Delta \; \sin \; \theta}} \right){\left( {\Delta_{1} - \Delta_{2}} \right)\left\lbrack {{\left( {\lambda - 1} \right)\Delta_{1}} - \Delta_{2}} \right\rbrack}}{{\left( {d + {r\; \tan \; \theta}} \right)\left( {\Delta_{1} + \Delta_{2}} \right)} - {{\lambda \left( {d + {2\Delta \; \sin \; \theta}} \right)}\left( {\Delta_{1} - \Delta_{2}} \right)}}},$

Δ₁ and Δ₂ are defined as above, and λ is a constant between 2 and 4.

To compute the corresponding points of P₁ and P₂ (designated P′) in the virtual right view, we need to find the reflections of these points with respect to the right side mirror (the one that passes through GH; see FIG. 14. For simplicity, we shall simply call that mirror “mirror GH”) and then project these reflections onto the virtual image plane. We show construction of the reflections of these points with respect to mirror GH first.

The reflection of P₁P₂ can be constructed as follows. First, compute reflections of C and P₁ with respect to mirror GH. The reflection of C with respect to mirror GH is the virtual camera V_(r). Hence, we need to compute V_(r) and Q₁, the reflection of P₁. The next step is to parameterize the ray V_(r)Q₁ (see FIG. 13) as follows:

L ₁(t)=V _(r) +t(Q ₁ −V _(r)), t≧0

The reflection of P₁P₂ is the segment of L₁(t) corresponding to the parameter subspace [1,t₂] where t₂ is defined in (27). More precisely, we have the following theorem.

THEOREM 2 For each point P=C +t(P₁−C), t ∈[1,t₂], of the segment P₁P₂, the reflection Q of P about the right mirror GH is

Q=L ₁(t)=V _(r) +t(Q ₁ −V _(r))   (29)

for the same parameter t.

PROOF In the following we will show that this is indeed the case by constructing V_(r) and Q₁ first. Note that virtual camera V_(r) is symmetric to virtual camera V_(l) with respect to the yz-plane and coordinates of V_(l) are (−2Δ cos θ,0,d+2Δ sin θ). Hence, it follows immediately that V_(r)=(2Δ cos θ,0,d+2Δ sin θ).

To compute Q₁ note that, from FIG. 13, the normalized normal of mirror GH is

$\begin{matrix} {N_{r} = {\frac{\left( {l,0,{h - r}} \right)}{\sqrt{l^{2} + \left( {h - r} \right)^{2}}} = \left( {{\cos \; \theta},0,{\sin \; \theta}} \right)}} & (30) \end{matrix}$

Therefore, Q₁ can be expressed as P₁+αN_(r) where α is the distance between P₁ and Q₁. On the other hand, the distance between P₁ and the mirror GH is

σ₁=(h−X)cos θ  (31)

and this distance is one half of the distance between P₁ and Q₁. Hence, we have

Q ₁ =P ₁+2σ₁ N _(r)   (32)

where σ₁ is defined in (31) and N_(r) is defined in (30).

We now show that for a general point P=L(t)=C+t(P ₁−C) in the line segment P₁P₂, the reflection Q is defined in (29). To show this, note that

P=(tX,tY,d−t(d+l))

and the distance between P and the mirror GH is

σ={r+[t(d+l)−d] tan θ−tX} cos θ  (33)

Hence, the reflection Q is of the following form

Q=P+2σN _(r) =C+t(P ₁ −C)+2σN _(r)   (34)

where σ is defined in (33). We claim that Q defined by (29) is exactly the same as

the Q defined in (34). We need the following equation to prove this claim:

Δ+t(σ₁−Δ)=σ  (35)

where Δ=r cos θ31 d sin θ and σ₁ and σ are defined in (31) and (33), respectively.

The proof of (35) follows:

$\begin{matrix} {{\Delta + {t\left( {\sigma_{1} - \Delta} \right)}} = {{r\; \cos \; \theta} - {d\; \sin \; \theta} + {t\left\{ {{\left( {h - X} \right)\cos \; \theta} - {r\; \cos \; \theta} + {d\; \sin \; \theta}} \right\}}}} \\ {= {\left\{ {r - {d\; \tan \; \theta} + {t\left\lbrack {h - X - r + {d\; \tan \; \theta}} \right\rbrack}} \right\} \cos \; \theta}} \\ {= {\left\{ {r - {d\; \tan \; \theta} - {tX} + {{t\left( {d + l} \right)}\tan \; \theta}} \right\} \cos \; \theta}} \\ {= {\left\{ {r + {\left\lbrack {{t\left( {d + l} \right)} - d} \right\rbrack \tan \; \theta} - {tX}} \right\} \cos \; \theta}} \\ {= \sigma} \end{matrix}$

But then since V_(r)=C+2ΔN_(r), we have

$\begin{matrix} {{L_{1}(t)} = {V_{r} + {t\left( {Q_{1} - V_{r}} \right)}}} \\ {= {C + {2\Delta \; N_{r}} + {t\left( {P_{1} + {2\; \sigma_{1}N_{r}} - C - {2\Delta \; N_{r}}} \right)}}} \\ {= {C + {t\left( {P_{1} - C} \right)} + {2\left( {\Delta + {t\left( {\sigma_{1} - \Delta} \right)}} \right)N_{r}}}} \\ {= {P + {2\; \sigma \; N_{r}}}} \\ {= Q} \end{matrix}$

Hence, the reflection of P=C+t(P₁−C) with respect to mirror GH is indeed V_(r)+t(Q₁−V_(r)) and this completes the proof of the theorem. Ξ

Representation (29) is an important observation. It shows to find the reflection of P₁P₂ about a particular mirror, one needs two things only: location of the virtual camera for that mirror and reflection of P₁ about that mirror. In the following, we list reflections of P₁P₂ about all mirrors.

(1) Reflection for the right mirror:

Q=V _(r) +t(Q ₁ −V _(r))t ∈[1,t ₂]

-   -   where V_(r)=C+2ΔN_(r) and Q₁=P₁+2σ_(l)N_(r) with Δ=r cos θ−d sin         θ, σ_(r)=(h−X)cos θ and N_(r)=(cos θ,0, sin θ).

(2) Reflection for the left mirror:

Q=V _(l) +t(Q ₁ −V _(l))t ∈[1,t ₂]

-   -   where V_(l)=C+2ΔN_(l) and Q₁=P₁+2σ_(l)N_(l) with Δ=r cos θ−d sin         θ, σ₁=(h+X)cos θ and N_(l)=(−cos θ,0, sin θ).

(3) Reflection for the top mirror:

Q=V _(l) +t(Q ₁ −V _(t))t ∈[1,t ₂]

-   -   where V_(t)=C+2ΔN_(t) and Q₁=P₁+2σ_(t)N_(t) with Δ=r cos θ−d sin         θ, σ_(t)=(h−Y)cos θ and N_(t)=(0, cos θ, sin θ).

(4) Reflection of the bottom minor:

Q=V _(b) +t(Q ₁ −V _(b))t ∈[1,t ₂]

-   -   where V_(b)=C+2ΔN_(b) and Q₁=P₁+2σ_(b)N_(b) with Δ=r cos θ−d sin         θ, σ_(b)=(h+Y)cos θ and N _(b)=(0,−cos θ, sin θ).

Note that in the above cases,

$X = {{{\left( {x + \frac{1}{2}} \right)\frac{2\; h}{m}} - {h\mspace{14mu} {and}\mspace{14mu} Y}} = {{\left( {y + \frac{1}{2}} \right)\frac{2\; h}{n}} - {h.}}}$

We now show how to find P₁′ and P₂′ (or, P₁′ and P₃′), the projections of Q₁ and Q₂ (or, Q₁ and Q₃) on the virtual image plane with respect to the real camera C. This is basically a process of finding the matrix representation of a perspective projection.

Given a point (X,Y,Z), let (X′,Y′,Z′) be its projection on the virtual image plane with respect to the real camera C=(0,0,d). Recall that the virtual image plane is l units away from the origin of the coordinate system in the negative z direction. Hence, Z′=−l. Thus:

$\frac{Y^{\prime}}{Y} = {{\frac{{+ l}}{{- Z}}\mspace{14mu} {and}\mspace{14mu} \frac{X^{\prime}}{X}} = \frac{{+ l}}{{- Z}}}$ or $Y^{\prime} = {{\frac{Y}{1 - {\left( {Z + l} \right)/\left( {d + l} \right)}}\mspace{14mu} {and}\mspace{14mu} X^{\prime}} = \frac{X}{1 - {\left( {Z + l} \right)/\left( {d + l} \right)}}}$

Hence, we have

$\begin{matrix} {\left\lbrack {X^{\prime},Y^{\prime},Z^{\prime},1} \right\rbrack = \left\lbrack {\frac{X}{1 - \frac{Z + l}{d + l}},\frac{Y}{1 - \frac{Z + l}{d + l}},{- l},1} \right\rbrack} \\ {= {\left\lbrack {0,0,d,1} \right\rbrack + \left\lbrack {\frac{X}{1 - \frac{Z + l}{d + l}},\frac{Y}{1 - \frac{Z + l}{d + l}},{{- d} - l},{- 1}} \right\rbrack}} \\ {= {\left\lbrack {0,0,d,1} \right\rbrack + \left\lbrack {X,Y,{Z - d},\frac{d - Z}{d + l}} \right\rbrack}} \\ {= {{\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d \\ 0 & 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & \frac{- 1}{d + l} & 0 \end{bmatrix}}\begin{bmatrix} X \\ Y \\ {Z - d} \\ 1 \end{bmatrix}}} \\ {= {{{\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & \frac{- 1}{d + l} & 0 \end{bmatrix}}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & {- d} \\ 0 & 0 & 0 & 1 \end{bmatrix}}\begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}}} \\ {= {{M_{l}\left( {0,0,d} \right)}*{M_{per}\left( {d + l} \right)}*{{M_{l}\left( {0,0,{- d}} \right)}\begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix}}}} \end{matrix}$

Consequently, matrix representation of the perspective projection is

$\begin{matrix} \begin{matrix} {M = {{M_{l}\left( {0,0,d} \right)}*{M_{per}\left( {d + l} \right)}*{M_{l}\left( {0,0,{- d}} \right)}}} \\ {= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}} \end{matrix} & (36) \end{matrix}$

To get P₁′ and P₂′ (or, P₁′ and P₃′) for a particular view, simply multiply the corresponding Q₁ and Q₂ (or, Q₁ and Q₃) by the above matrix M.

(1) For the right view: to get P₁′, first compute the reflection of P₁ with respect to the right mirror:

$\begin{matrix} {Q_{1} = {P_{1} + {2\sigma_{r}N_{r}}}} \\ {= {\left( {X,Y,{- l}} \right) + {2{\sigma_{r}\left( {{\cos \; \theta},0,{\sin \; \theta}} \right)}}}} \\ {= \left( {{X + {2\sigma_{r}\cos \; \theta}},Y,{{- l} + {2\sigma}},{\sin \; \theta}} \right)} \end{matrix}$

where σ_(r)=(h−X)cos θ. Then multiply the matrix representation of Q₁ by M:

$\begin{matrix} {P_{1}^{\prime} = {MQ}_{1}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {X + {2\sigma_{r}\cos \; \theta}} \\ Y \\ {{- l} + {2\sigma_{r}\sin \; \theta}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} {X + {2\sigma_{r}\cos \; \theta}} \\ Y \\ \frac{- {l\left( {d + l - {2\sigma_{r}\sin \; \theta}} \right)}}{d + l} \\ \frac{d + l - {2\sigma_{r}\sin \; \theta}}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)\left( {X + {2\sigma_{r}\cos \; \theta}} \right)}{d + l - {2\sigma_{r}\sin \; \theta}} \\ \frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{r}\sin \; \theta}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

To get P₂′, note that according to Theorem 2, the reflection of P₂ with respect to the right mirror can be computed as follows:

$\begin{matrix} {Q_{2} = {V_{r} + {t_{2}\left( {Q_{1} - V_{r}} \right)}}} \\ {= {\left( {{2{\Delta cos}\; \theta},0,{d + {2{\Delta sin\theta}}}} \right) +}} \\ {{t_{2}\left\lbrack {\left( {{X + {2\sigma_{r}\cos \; \theta}},Y,{{- l} + {2\sigma_{r}\sin \; \theta}}} \right) - \left( {{2{\Delta cos}\; \theta},0,{d + {2{\Delta sin\theta}}}} \right)} \right\rbrack}} \\ {= \begin{pmatrix} {{{2{\Delta cos}\; \theta} + {t_{2}\left( {X + {2\sigma_{r}\cos \; \theta} - {2{\Delta cos}\; \theta}} \right)}},{t_{2}Y},{d +}} \\ {{2{\Delta sin}\; \theta} + {t_{2}\left( {{- d} - l + {2\sigma_{r}\sin \; \theta} - {2{\Delta sin}\; \theta}} \right)}} \end{pmatrix}} \end{matrix}$

Since

$\begin{matrix} {{X + {2\sigma_{r}\cos \; \theta} - {2{\Delta cos}\; \theta}} = {X + {2\left( {h - X} \right)\cos^{2}\theta} - {2\begin{pmatrix} {{r\; \cos \; \theta} -} \\ {d\; \sin \; \theta} \end{pmatrix}\cos \; \theta}}} \\ {= {{X\left( {1 - {2\; \cos^{2}\theta}} \right)} + {2\; l\; \sin \; {\theta cos}\; \theta} + {2\; d\; \sin \; {\theta cos\theta}}}} \\ {= {{{- X}\; {\cos \left( {2\theta} \right)}} + {\left( {d + l} \right){\sin \left( {2\theta} \right)}}}} \end{matrix}$ and $\begin{matrix} {{d + l - {2\sigma_{r}\sin \; \theta} + {2{\Delta sin}\; \theta}} = {d + l - {2\left( {h - X} \right)\cos \; {\theta sin}\; \theta} +}} \\ {{2\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\sin \; \theta}} \\ {= {{d\left( {1 - {2\sin^{2}\theta}} \right)} - {2l\; \sin^{2}\theta} +}} \\ {{l + {2X\; \cos \; {\theta sin}\; \theta}}} \\ {= {{X\; {\sin \left( {2\theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\theta} \right)}}}} \end{matrix}$

hence, we have

Q ₂=(2Δ cos θ+t ₂ρ_(1r) ,t ₂ Y,d+2Δ sin θ+t ₂ρ_(2r))

where

ρ_(1r) =−X cos(2θ)+(d+l)sin(2θ)

ρ_(2r) =−X sin(2θ)−(d+l)cos(2θ)   (37)

and t₂ is defined in (27). Now multiply the matrix representation of Q₂ by M to get P₂′:

$\begin{matrix} {P_{2}^{\prime} = {MQ}_{2}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {{2{\Delta cos}\; \theta} + {t_{2}\rho_{1\; r}}} \\ {t_{2}Y} \\ {d + {2{\Delta sin}\; \theta} + {t_{2}\rho_{2\; r}}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} {{2{\Delta cos}\; \theta} + {t_{2}\rho_{1\; r}}} \\ {t_{2}Y} \\ \frac{{l\left( {d + {2{\Delta sin}\; \theta} + {t_{2}\rho_{2\; r}}} \right)} - {dl}}{d + l} \\ \frac{{- d} - {2{\Delta sin}\; \theta} - {t_{2}\rho_{2\; r}} + d}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)\left( {{2{\Delta cos}\; \theta} + {t_{2}\rho_{1\; r}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2\; r}}} \\ \frac{\left( {d + l} \right)t_{2}Y}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2\; r}}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

where ρ_(1r) and ρ_(2r) defined in (37) and t₂ is defined in (27). This expression of P₂′ reduces to P₁′ when t₂=1. Hence it includes P₁′ as a special case.

The computation process of P₃′ for the right view is similar to the computation process of P₂′. First compute Q₃ as follows

Q ₃=(2Δ cos θ+t ₃ρ_(1r) ,t ₃ Y,d+2Δ sin θ+t ₃ρ_(2r))

where ρ_(1r) and ρ_(2r) are defined as above, and t₃ is defined as previously. Then multiply

by the matrix M defined in (36). The result is similar to P₂′ (simply replace t₂ with t₃ in the expression of P₂′).

In the following, we show P₁′ and P₂′ for the left, the upper and the lower views. P₃′ will not be shown here because one can get P₃′ from P₂′ by replacing each t₂ in P₂′ with a t₃.

(2) For the left view: we have

Q ₁ =P ₁+2σ_(l) N _(l)=(X−2σ_(l) cos θ,Y,−l+2σ_(l) sin θ)

where N_(l)=(−cos θ,0, sin θ) and σ_(l)=(h+X)cos θ. Hence

$\begin{matrix} {P_{1}^{\prime} = {MQ}_{1}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {X - {2\sigma_{l}\cos \; \theta}} \\ Y \\ {{- l} + {2\sigma_{l}\sin \; \theta}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)\left( {X - {2\sigma_{l}\cos \; \theta}} \right)}{d + l - {2\sigma_{l}\sin \; \theta}} \\ \frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{l}\sin \; \theta}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

To get P₂′, we need to find Q₂ first. By Theorem 2, we have

$\begin{matrix} {Q_{2} = {V_{l} + {t_{2}\left( {Q_{1} - V_{l}} \right)}}} \\ {= {\left( {{{- 2}{\Delta cos}\; \theta},0,{d + {2{\Delta sin\theta}}}} \right) +}} \\ {{t_{2}\left\lbrack {\left( {{X - {2\sigma_{l}\cos \; \theta}},Y,{{- l} + {2\sigma_{l}\sin \; \theta}}} \right) - \left( {{{- 2}{\Delta cos}\; \theta},0,{d + {2{\Delta sin\theta}}}} \right)} \right\rbrack}} \\ {= \begin{pmatrix} {{{{- 2}{\Delta cos}\; \theta} + {t_{2}\left( {X - {2\sigma_{l}\cos \; \theta} + {2{\Delta cos}\; \theta}} \right)}},{t_{2}Y},{d +}} \\ {{2{\Delta sin}\; \theta} - {t_{2}\left( {d + l - {2\sigma_{l}\sin \; \theta} + {2{\Delta sin}\; \theta}} \right)}} \end{pmatrix}} \end{matrix}$

Since

$\begin{matrix} {{X - {2\sigma_{l}\cos \; \theta} + {2{\Delta cos}\; \theta}} = {X - {2\left( {h + X} \right)\cos^{2}\theta} + {2\begin{pmatrix} {{r\; \cos \; \theta} -} \\ {d\; \sin \; \theta} \end{pmatrix}\cos \; \theta}}} \\ {= {{X\left( {1 - {2\; \cos^{2}\theta}} \right)} - {2\; l\; \sin \; {\theta cos}\; \theta} - {2\; d\; \sin \; {\theta cos\theta}}}} \\ {= {{{- X}\; {\cos \left( {2\theta} \right)}} - {\left( {d + l} \right){\sin \left( {2\theta} \right)}}}} \end{matrix}$ and $\begin{matrix} {{d + l - {2\sigma_{l}\sin \; \theta} + {2{\Delta sin}\; \theta}} = {d + l - {2\left( {h + X} \right)\cos \; {\theta sin}\; \theta} +}} \\ {{2\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\sin \; \theta}} \\ {= {{d\left( {1 - {2\sin^{2}\theta}} \right)} - {2\left( {h - r} \right)\cos \; \theta \; \sin \; \theta} +}} \\ {{l - {2X\; \cos \; {\theta sin}\; \theta}}} \\ {= {{d\; {\cos \left( {2\; \theta} \right)}} + {l\left( {1 - {2\; \sin^{2}\theta}} \right)} - {X\; {\sin \left( {2\theta} \right)}}}} \\ {= {{{- X}\; {\sin \left( {2\theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\theta} \right)}}}} \end{matrix}$

Hence,

Q ₂=(−2Δ cos θ+t ₂ρ_(1l) ,t ₂ Y,d+2Δ sin θ+t ₂ρ_(2l))

where

ρ_(1l) =−X cos(2θ)−(d+l)sin(2θ)

ρ_(2l) =X sin(2θ)−(d+l)cos(2θ)   (38)

Therefore, we have

$\begin{matrix} {P_{2}^{\prime} = {MQ}_{2}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {{{- 2}\Delta \; \cos \; \theta} + {t_{2}\rho_{1l}}} \\ {t_{2}Y} \\ {d + {2\Delta \; \sin \; \theta} + {t_{2}\rho_{2l}}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)\left( {{{- 2}\Delta \; \cos \; \theta} + {t_{2}\rho_{1l}}} \right)}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2l}}} \\ \frac{\left( {d + l} \right)t_{2}Y}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2l}}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

where ρ_(1l) and ρ_(2l) are defined in (38) and t₂ is defined in (27).

(3) For the upper view: we have

$\begin{matrix} {Q_{1} = {P_{1} + {2\sigma_{t}N_{t}}}} \\ {= {\left( {X,Y,{- l}} \right) + {2{\sigma_{t}\left( {0,{\cos \; \theta},{\sin \; \theta}} \right)}}}} \\ {= \left( {X,{Y + {2\sigma_{t}\cos \; \theta}},{{- l} + {2\sigma_{t}\sin \; \theta}}} \right)} \end{matrix}$

where σ_(l)=(h−Y)cos θ. Hence,

$\begin{matrix} {P_{1}^{\prime} = {MQ}_{1}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} X \\ {Y + {2\sigma_{t}\cos \; \theta}} \\ {{- l} + {2\sigma_{t}\sin \; \theta}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} X \\ {Y + {2\sigma_{t}\cos \; \theta}} \\ \frac{{l\left( {{- l} + {2\sigma_{t}\sin \; \theta}} \right)} - {dl}}{d + l} \\ \frac{l - {2\sigma_{t}\sin \; \theta} + d}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)X}{d + l - {2\sigma_{t}\sin \; \theta}} \\ \frac{\left( {d + l} \right)\left( {Y + {2\sigma_{t}\cos \; \theta}} \right)}{d + l - {2\sigma_{t}\sin \; \theta}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

To get P₂′, we need to find Q₂ first. By Theorem 2, we have

$\begin{matrix} {Q_{2} = {V_{t} + {t_{2}\left( {Q_{1} - V_{t}} \right)}}} \\ {= {\left( {0,{2\Delta \; \cos \; \theta},{d + {2\Delta \; \sin \; \theta}}} \right) +}} \\ {{t_{2}\begin{bmatrix} {\left( {X,{Y + {2\sigma_{t}\cos \; \theta}},{{- l} + {2\sigma_{t}\sin \; \theta}}} \right) -} \\ \left( {0,{2\Delta \; \cos \; \theta},{d + {2\Delta \; \sin \; \theta}}} \right) \end{bmatrix}}} \\ {= \begin{pmatrix} {{t_{2}X},{{2\Delta \; \cos \; \theta} + {t_{2}\left( {Y + {2\sigma_{t}\cos \; \theta} - {2\Delta \; \cos \; \theta}} \right)}}} \\ {d + {2\Delta \; \sin \; \theta} + {t_{2}\left( {{- d} - l + {2\sigma_{t}\sin \; \theta} - {2\Delta \; \sin \; \theta}} \right)}} \end{pmatrix}} \end{matrix}$

Since

$\begin{matrix} \begin{matrix} {{Y + {2\sigma_{t}\cos \; \theta} - {2\Delta \; \cos \; \theta}} = {Y + {2\left( {h - Y} \right)\cos^{2}\theta} - {2\begin{pmatrix} {{r\; \cos \; \theta} -} \\ {d\; \sin \; \theta} \end{pmatrix}\cos \; \theta}}} \\ {= {{Y\left( {1 - {2\cos^{2}\theta}} \right)} + {2l\; \sin \; {\theta cos}\; \theta} + {2d\; \sin \; {\theta cos}\; \theta}}} \\ {= {{{- Y}\; {\cos \left( {2\theta} \right)}} + {\left( {d + l} \right)\sin \; \left( {2\theta} \right)}}} \end{matrix} \\ {{and}\begin{matrix} {{d + l - {2\sigma_{t}\sin \; \theta} + {2\Delta \; \sin \; \theta}} = {d + l - {2\left( {h - Y} \right)\cos \; {\theta sin}\; \theta} +}} \\ {{2\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\sin \; \theta}} \\ {= {{d\left( {1 - {2{\sin \;}^{2}\theta}} \right)} - {2l\; \sin^{2}\; \theta} + {2Y\; \cos \; {\theta sin}\; \theta}}} \\ {= {{\left( {d + l} \right){\cos \left( {2\theta} \right)}} + {Y\; {\sin \left( {2\theta} \right)}}}} \end{matrix}} \end{matrix}$

Hence,

Q ₂=(t ₂ X,2Δ cos θ+t ₂ρ_(1r) ,d+2Δ sin θ+t ₂ρ_(2l))

where

ρ_(1t) =−Y cos(2θ)+(d+l)sin(2θ)

ρ_(2t) =−Y sin(2θ)−(d+l)cos(2θ)   (39)

Therefore, we have

$\begin{matrix} {P_{2}^{\prime} = {MQ}_{2}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {t_{2}X} \\ {{2\Delta \; \cos \; \theta} + {t_{2}\rho_{1t}}} \\ {d + {2\Delta \; \sin \; \theta} + {t_{2}\rho_{2t}}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} {t_{2}X} \\ {{2\Delta \; \cos \; \theta} + {t_{2}\rho_{1t}}} \\ \frac{{l\left( {d + {2\Delta \; \sin \; \theta} + {t_{2}\rho_{2t}}} \right)} - {dl}}{d + l} \\ \frac{{- d} - {2\Delta \; \sin \; \theta} - {t_{2}\rho_{2t}} + d}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)t_{2}X}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2t}}} \\ \frac{\left( {d + l} \right)\left( {{2\Delta \; \cos \; \theta} + {t_{2}\rho_{1t}}} \right)}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2t}}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

where ρ_(1t) and p_(2t) are defined in (39) and t₂ is defined in (27).

(4) For the lower view: we have

$\begin{matrix} {Q_{1} = {P_{1} + {2\sigma_{b}N_{b}}}} \\ {= {\left( {X,Y,{- l}} \right) + {2{\sigma_{b}\left( {0,{{- \cos}\; \theta},{\sin \; \theta}} \right)}}}} \\ {= \left( {X,{Y - {2\sigma_{b}\cos \; \theta}},{{- l} + {2\sigma_{b}\sin \; \theta}}} \right)} \end{matrix}$

where σ_(b)=(h+Y)cos θ. Hence,

$\begin{matrix} {P_{1}^{\prime} = {MQ}_{1}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + l} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} X \\ {Y - {2\sigma_{b}\cos \; \theta}} \\ {{- l} + {2\sigma_{b}\sin \; \theta}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} X \\ {Y\; - {2\sigma_{b}\cos \; \theta}} \\ \frac{{l\left( {{- l} + {2\sigma_{b}\sin \; \theta}} \right)} - {dl}}{d + l} \\ \frac{l - {2\sigma_{b}\sin \; \theta} + d}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)X}{d + l - {2\sigma_{b}\sin \; \theta}} \\ \frac{\left( {d + l} \right)\left( {Y - {2\sigma_{b}\cos \; \theta}} \right)}{d + l - {2\sigma_{b}\sin \; \theta}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

To get P₂′, we need to find Q₂ first. By Theorem 2, we have

$\begin{matrix} {Q_{2} = {V_{b} + {t_{2}\left( {Q_{1} - V_{b}} \right)}}} \\ {= {\left( {0,{{- 2}\Delta \; \cos \; \theta},{d + {2\Delta \; \sin \; \theta}}} \right) +}} \\ {{t_{2}\begin{bmatrix} {\left( {X,{Y + {2\sigma_{b}\cos \; \theta}},{{- l} + {2\sigma_{b}\sin \; \theta}}} \right) -} \\ \left( {0,{{- 2}\Delta \; \cos \; \theta},{d + {2\Delta \; \sin \; \theta}}} \right) \end{bmatrix}}} \\ {= \begin{pmatrix} {{t_{2}X},{{{- 2}\Delta \; \cos \; \theta} + {t_{2}\left( {Y - {2\sigma_{b}\cos \; \theta} + {2\Delta \; \cos \; \theta}} \right)}},} \\ {d + {2\Delta \; \sin \; \theta} + {t_{2}\left( {{- d} - l + {2\sigma_{b}\sin \; \theta} - {2\Delta \; \sin \; \theta}} \right)}} \end{pmatrix}} \end{matrix}$

Since

$\begin{matrix} {{{Y - {2\sigma_{b}\cos \; \theta} + {2\Delta \; \sin \; \theta}} = {Y - {2\left( {h + Y} \right)\cos^{2}\theta} + {2\begin{pmatrix} {{r\; \cos \; \theta} -} \\ {d\; \sin \; \theta} \end{pmatrix}\cos \; \theta}}}\;} \\ {= {{- {Y\begin{pmatrix} {{2\cos^{2}\theta} -} \\ 1 \end{pmatrix}}} - {2l\; \sin \; {\theta cos}\; \theta} - {2d\; \sin \; {\theta cos}\; \theta}}} \\ {= {{{- Y}\; {\cos \left( {2\theta} \right)}} - {\left( {d + l} \right)\sin \; \left( {2\theta} \right)}}} \end{matrix}$ and $\begin{matrix} {{{- d} - l + {2\sigma_{b}\sin \; \theta} - {2\Delta \; \sin \; \theta}} = {{- d} - l + {2\left( {h + Y} \right)\cos \; {\theta sin}\; \theta} -}} \\ {{2\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\sin \; \theta}} \\ {= {{- {d\left( {1 - {2{\sin \;}^{2}\theta}} \right)}} + {2l\; \sin^{2}\; \theta} - l +}} \\ {{Y\; \sin \; \left( {2\theta} \right)}} \\ {= {{Y\; \sin \; \left( {2\theta} \right)} - {\left( {d + l} \right){\cos \left( {2\theta} \right)}}}} \end{matrix}$

Hence,

Q ₂=(t ₂ X,−2Δ cos θ+t ₂ρ_(1b) ,d+2Δ sin θ+t ₂ρ_(2b))

where

ρ_(1b) =−Y cos(2θ)−(d+l)sin(2θ)

ρ_(2b) =Y sin(2θ)−(d+l)cos(2θ)   (40)

Therefore, we have

$\begin{matrix} {P_{2}^{\prime} = {MQ}_{2}} \\ {= {\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & \frac{l}{d + l} & \frac{- {dl}}{d + l} \\ 0 & 0 & \frac{- 1}{d + L} & \frac{d}{d + l} \end{bmatrix}\begin{bmatrix} {t_{2}X} \\ {{{- 2}\Delta \; \cos \; \theta} + {t_{2}\rho_{1b}}} \\ {d + {2\Delta \; \sin \; \theta} + {t_{2}\rho_{2b}}} \\ 1 \end{bmatrix}}} \\ {= \begin{bmatrix} {t_{2}X} \\ {{{- 2}\Delta \; \cos \; \theta} + {t_{2}\rho_{1b}}} \\ \frac{{l\left( {d + {2\Delta \; \sin \; \theta} + {t_{2}\rho_{2b}}} \right)} - {dl}}{d + l} \\ \frac{{- d} - {2\Delta \; \sin \; \theta} - {t_{2}\rho_{2b}} + d}{d + l} \end{bmatrix}} \\ {= \begin{bmatrix} \frac{\left( {d + l} \right)t_{2}X}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2b}}} \\ \frac{\left( {d + l} \right)\left( {{{- 2}\Delta \; \cos \; \theta} + {t_{2}\rho_{1b}}} \right)}{{{- 2}\Delta \; \sin \; \theta} - {t_{2}\rho_{2b}}} \\ {- l} \\ 1 \end{bmatrix}} \end{matrix}$

where ρ_(1b) and ρ_(2b) are defined in (40) and t₂ is defined in (27).

Once we have P₁′ and P²′ (or, P₁′ and P₃′) in a particular virtual view of the virtual image plane, the next step was to find their counterparts in the STM image. We need their counterparts for the subsequent matching process to identify A's corresponding point A′. It is sufficient to show the process for a general point in the virtual right view.

Let P=(X,Y,−l) be an arbitrary point in the virtual right view of the virtual image plane. The lower-left, upper-left, lower-right and upper-right corners of the virtual right view are

D′=(h,−h,−l)

A′=(h,h,−l),

${C^{\prime} = \left( {\frac{r\left( {d + l} \right)}{d},\frac{{- {h\left( {d + l} \right)}}\left( {d + {2\Delta \; \sin \; \theta}} \right)}{d\left( {d + l + {2\Delta \; \sin \; \theta}} \right)},{- l}} \right)},{and}$ ${B^{\prime} = \left( {\frac{r\left( {d + l} \right)}{d},\frac{{h\left( {d + l} \right)}\left( {d + {2\Delta \; \sin \; \theta}} \right)}{d\left( {d + l + {2\Delta \; \sin \; \theta}} \right)},{- l}} \right)},$

respectively, where d, r, l, h, and θ are parameters of the STMIS defined as before and Δ=r cos θ−d sin θ is the distance between the real camera and each of the mirror plane.

Let G=(x,y) be the counterpart of P in the right view of the STM image, x and y are real numbers (see FIG. 15). Here we assume a real number coordinate system has been imposed on the right view of the STM image, whose x- and y-axes coincide with the x- and y-axes of the original integer coordinate system of the right view. Therefore, it makes sense to consider points with real number coordinates in the right view of the STM image. The lower-left, upper-left, lower-right and upper-right corners of the right view of the STM image with this real number coordinate system are now:

${D = \left( {{- \frac{1}{2}},{- \frac{1}{2}}} \right)},{A = \left( {{- \frac{1}{2}},{n - \frac{1}{2}}} \right)},{C = \left( {{m_{1} - \frac{1}{2}},{{- q} - \frac{1}{2}}} \right)}$ and ${B = \left( {{m_{1} - \frac{1}{2}},{n + q - \frac{1}{2}}} \right)},$

respectively, where m_(l)>0 is the resolution of the right view in x direction and n+2q (q>0) is the resolution of the right view's right edge BC.

The x- and y-coordinates of G can be computed as follows. Note that the shape of the virtual right view and the shape of the right view of the STM image are similar. This implies that the shape of the rectangle A′E′F′D′ is also similar to the shape of the rectangle AEFD (see FIG. 16). Therefore, when we use ‘aspect ratio preserving property’ to compute x and y, we can simply consider aspect rations of P in the rectangle A′E′F′D′ and aspect ratios of G in the rectangle AEFD. By using the aspect ration preserving property in the x direction, we have

$\begin{matrix} {{{\frac{X - h}{x - \left( {{- 1}/2} \right)} = \frac{{{r\left( {d + l} \right)}/d} - h}{m_{1} - {1/2} - \left( {{- 1}/2} \right)}},{or}}{{\frac{X - h}{x + {1/2}} = {\frac{{{r\left( {d + l} \right)}/d} - h}{m_{1}} = \frac{{{r\left( {d + l} \right)}/d} - h}{\left( {{{r\left( {d + l} \right)}/d} - h} \right)\left( {{m/2}h} \right)}}},{or}}\text{}{{\frac{X - h}{x + {1/2}} = \frac{2h}{m}},{or}}{{{x + \frac{1}{2}} = \frac{m\left( {X - h} \right)}{2h}},{or}}\text{}{{x = {{{- \frac{1}{2}} + \frac{m\left( {X - h} \right)}{2h}} = {\frac{{- h} + {m\left( {X - h} \right)}}{2h}.{Hence}}}},\text{}{x = {\frac{{mX} - {\left( {m + 1} \right)h}}{2h}.}}}} & (41) \end{matrix}$

By using the aspect ration preserving property in the y direction in the rectangle A′E′F′D′ and in the rectangle AEFD we have

$\begin{matrix} {{{\frac{y + {1/2}}{Y + h} = {\frac{n - {1/2} - \left( {{- 1}/2} \right)}{h - \left( {- h} \right)} = \frac{n}{2h}}},{or}}{{{y + \frac{1}{2}} = \frac{{nY} + {nh}}{2h}},{or}}\text{}{{y = {{{- \frac{1}{2}} + \frac{{nY} + {nh}}{2h}} = {\frac{{nY} + {nh} - h}{2h}.{Hence}}}},\text{}{y = {\frac{{nY} + {\left( {n - 1} \right)h}}{2h}.}}}} & (42) \end{matrix}$

The computation of counterparts for other virtual views can be done similarly. The results are listed below.

Let P=(X,Y,−l) be an arbitrary point in the virtual left view of a virtual image plane (see FIG. 16) whose lower-left, upper-left, lower-right and upper-right corners are

${C^{\prime} = \left( {\frac{- {r\left( {d + l} \right)}}{d},\frac{{- {h\left( {d + l} \right)}}\left( {d + {2{\Delta sin}\; \theta}} \right)}{d\left( {d + l + {2{\Delta sin\theta}}} \right)},{- l}} \right)},{B^{\prime} = \left( {\frac{- {r\left( {d + l} \right)}}{d},\frac{{h\left( {d + l} \right)}\left( {d + {2{\Delta sin}\; \theta}} \right)}{d\left( {d + l + {2{\Delta sin\theta}}} \right)},{- l}} \right)},{D^{\prime} = {\left( {{- h},{- h},{- l}} \right)\mspace{14mu} {and}}}$ A^(′) = (−h, h, −l),

respectively. If G=(x,y) is the counterpart of P in the left view of the STM image whose lower-left, upper-left, lower-right and upper-right corners are

C=(−m ₁+½,−q−½),

B=(−m ₁+½,n+q−½),

D=(½,−½) and

A=(½,n−½),

respectively, then x and y are real numbers of the following values

$\begin{matrix} {x = \frac{{mX} + {\left( {m + 1} \right)h}}{2h}} & (43) \\ {y = \frac{{nY} + {\left( {n - 1} \right)h}}{2h}} & (44) \end{matrix}$

Let P=(X,Y,−l) be an arbitrary point in the virtual upper view of a virtual image plane (see FIG. 17) whose lower-left, upper-left, lower-right and upper-right corners are

${D^{\prime} = \left( {{- h},h,{- l}} \right)},{C^{\prime} = \left( {\frac{{- {h\left( {d + l} \right)}}\left( {d + {2{\Delta sin}\; \theta}} \right)}{d\left( {d + l + {2{\Delta sin}\; \theta}} \right)},\frac{r\left( {d + l} \right)}{d},{- l}} \right)},{B^{\prime} = {\left( {\frac{{h\left( {d + l} \right)}\left( {d + {2{\Delta sin}\; \theta}} \right)}{d\left( {d + l + {2{\Delta sin}\; \theta}} \right)},\frac{r\left( {d + l} \right)}{d},{- l}} \right)\mspace{14mu} {and}}}$ A^(′) = (h, h − l),

respectively. If G=(x,y) is the counterpart of P in the upper view of the STM image whose lower-left, upper-left, lower-right and upper-right corners are

D=(−½,−½),

C=(−p−½,n ₁−½),

B=(m−½+p,n ₁−½) and

A=(m−½,−½),

respectively, then x and y are real numbers of the following values

$\begin{matrix} {x = \frac{{mX} + {\left( {m - 1} \right)h}}{2h}} & (45) \\ {y = \frac{{nY} - {\left( {n + 1} \right)h}}{2h}} & (46) \end{matrix}$

For the lower view case, we will simply give the x- and y-coordinates of the counterpart G=(x,y) in the lower view of the STM image for the given point P=(X,Y,−l) in the virtual lower view of the virtual image plane:

$\begin{matrix} {x = \frac{{mX} + {\left( {m - 1} \right)h}}{2h}} & (47) \\ {y = \frac{{nY} + {\left( {n + 1} \right)h}}{2n}} & (48) \end{matrix}$

With the computation processes developed above, we are ready for initial screening of the corresponding points now. The concept is described as follows.

For each point A=(x,y), 0≦x≦m−1, 0≦y≦n−1, in the central view of the given STM image where in x n is the resolution of the central view, first identify its corresponding point P₁=(X,Y,−l) in the virtual central view of the virtual image plane with

$X = {{{\left( {x - \frac{m}{2}} \right)\frac{2h}{m}} + \frac{h}{m}} = {{\left( {x + \frac{1}{2}} \right)\frac{2h}{m}} - h}}$ $Y = {{{\left( {y - \frac{n}{2}} \right)\frac{2h}{n}} + \frac{h}{n}} = {{\left( {y + \frac{1}{2}} \right)\frac{2h}{n}} - h}}$

where l is the length of the STM and 2h×2h is the dimension of the front opening of the STM.

We then compute the location of the point P₂ by using (27) to compute the values of t₂ first and then using the following equation to get coordinates of P₂:

P ₂ =C+t ₂(P ₁ −C)=(t ₂ X,t ₂ Y,d−t ₂(d+l))

where C=(0,0,d) is the location of the pinhole of the camera. The value of d can be determined using the technique described previously.

Note that if the following condition is satisfied:

-   -   (i) 2Δ cos θ>h and X≠0, or     -   (ii) 2Δ cos θ<h and |X|> X where

${\overset{\_}{X} = \frac{\left( {d + l} \right)\left( {d + l + {2{\Delta sin}\; \theta}} \right){\left( {\Delta_{1} - \Delta_{2}} \right)\left\lbrack {{\left( {\lambda - 1} \right)\Delta_{1}} - \Delta_{2}} \right\rbrack}}{{\left( {d + {r\; \tan \; \theta}} \right)\left( {\Delta_{1} + \Delta_{2}} \right)} - {{\lambda \left( {d + {2{\Delta sin}\; \theta}} \right)}\left( {\Delta_{1} - \Delta_{2}} \right)}}},$

Δ=r cos θ−d sin θ, Δ₁ and Δ₂ are defined above, 2r×2r is the dimension of the rear end of the STM and λ is a constant between 2 and 4 specified by the user for the location of the general J-point (see (26) for the definition of the general J-point), then t₂ should be computed using (27).

Next, we compute the projections of P₁ and P₂ in the virtual right view, virtual left view, virtual upper view and virtual lower view. These projections will be called P_(1r)′ and P_(2r)′, P_(1l)′ and P_(2l)′, P_(1r)′ and P_(2r)′and P_(1b)′ and P_(2b)′, respectively. They are listed below:

$P_{1r}^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {{X + {2\sigma}},{\cos \; \theta}} \right)}{d + l - {2\sigma_{r}\sin \; \theta}},\frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{r}\sin \; \theta}},{- l}} \right)$ $P_{2r}^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {{2{\Delta cos}\; \theta} + {t_{2}\rho_{1r}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2r}}},\frac{\left( {d + l} \right)t_{2}Y}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2r}}},{- l}} \right)$ $P_{1l}^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {X - {2\sigma_{l}\cos \; \theta}} \right)}{d + l - {2\sigma_{l}\sin \; \theta}},\frac{\left( {d + l} \right)Y}{d + l - {2\sigma_{l}\sin \; \theta}},{- l}} \right)$ $P_{2l}^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {{{- 2}{\Delta cos}\; \theta} + {t_{2}\rho_{1l}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2l}}},\frac{\left( {d + l} \right)t_{2}Y}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2l}}},{- l}} \right)$ $P_{1i}^{\prime} = \left( {\frac{\left( {d + l} \right)X}{d + l - {2\sigma_{i}\sin \; \theta}},\frac{\left( {d + l} \right)\left( {Y + {2\sigma_{i}\cos \; \theta}} \right)}{d + l - {2\sigma_{i}\sin \; \theta}},{- l}} \right)$ $P_{2i}^{\prime} = \left( {\frac{\left( {d + l} \right)t_{2}X}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2i}}},\frac{\left( {d + l} \right)\left( {{2{\Delta cos\theta}} + {t_{2}\rho_{1i}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2i}}},{- l}} \right)$ $P_{1b}^{\prime} = \left( {\frac{\left( {d + l} \right)X}{d + l - {2\sigma_{b}\sin \; \theta}},\frac{\left( {d + l} \right)\left( {Y - {2\sigma_{b}\cos \; \theta}} \right)}{d + l - {2\sigma_{b}\sin \; \theta}},{- l}} \right)$ $P_{2b}^{\prime} = \left( {\frac{\left( {d + l} \right)t_{2}X}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2b}}},\frac{\left( {d + l} \right)\left( {{{- 2}{\Delta cos}\; \theta} + {t_{2}\rho_{1b}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {t_{2}\rho_{2b}}},{- l}} \right)$

where

σ_(r)=(h−X)cos θ;

σ_(l)=(h+X)cos θ;

σ_(i)=(h−Y)cos θ;

σ_(b)=(h+Y)cos θ;

and ρ_(iv), ρ_(il), ρ_(ir) and ρ_(ib), i=1,2, are defined as set forth above.

We then set a step size for the digitization parameter t of the line segment P₁P₂ as follows:

Δ_(t)=δ/(d+l)

where

δ=min{2h/m,2h/n}

This step size will ensure that each digitized element of P₁P₂ is of length δ, the minimum of the dimension

$\frac{2h}{m} \times \frac{2h}{n}$

of a virtual pixel in the virtual image plane. The digitization process starts at P₁(t=1) and proceeds by the step size

Δ_(P)=Δ_(l)(P ₁ −C).

The number of digitized elements of the line segment P₁P₂ is

$N = {\left\lbrack \frac{t_{2} - 1}{\Delta_{t}} \right\rbrack.}$

The basic idea of the searching process for corresponding points in the right view can be described as follows. The searching process for corresponding points in the other views is similar.

For the i-th digitized element P of P₁P₂

P=C+(1+iΔ _(t))(P ₁ −C)=P ₁ +iΔ _(p)

we find its projection P′ in the virtual right view

$P^{\prime} = {\left( {\overset{\_}{X},\overset{\_}{Y},{- l}} \right) = \begin{pmatrix} {\frac{\left( {d + l} \right)\begin{pmatrix} {{2{\Delta cos\theta}} +} \\ {\left( {1 + {i\; \Delta \; t}} \right)\rho_{1r}} \end{pmatrix}}{{{- 2}{\Delta sin}\; \theta} - {\left( {1 + {i\; \Delta_{i}}} \right)\rho_{2r}}},} \\ {\frac{\left( {d + l} \right)\left( {1 + {i\; \Delta_{i}}} \right)Y}{{{- 2}{\Delta sin\theta}} - {\left( {1 + {i\; \Delta_{i}}} \right)\rho_{2r}}},{- l}} \end{pmatrix}}$

and the counterpart of P′ in the STM image's right view

$G = {\left( {\alpha,\beta} \right) = {\left( {\frac{{m\overset{\_}{X}} - {\left( {m + 1} \right)h}}{2h},\frac{{n\overset{\_}{Y}} + {\left( {n - 1} \right)h}}{2h}} \right).}}$

A matching process is then performed on a patch centered at A=(α,β) in the STM image's central view and a patch centered at G=(α,β) in the STM image's right view. This matching process will return the difference of the intensity values of the patches. Whichever P′ whose returned difference result is the smallest and is smaller than a given tolerance is considered the corresponding point of P₁ (or, A=(x,y)).

In the above process, P can be computed using an incremental method. Actually P′ can be computed using an incremental method as well. Note that the start point of P is P₁ and the start point of P′ is P₁′. Hence, it is sufficient to show that the second point of P′ (t=1+Δ_(l)) can be computed from P₁′ incrementally. First, note that

$\begin{matrix} {{{2{\Delta cos}\; \theta} + \rho_{1r}} = {{2\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\cos \; \theta} - {X\; {\cos \left( {2\; \theta} \right)}} + {\left( {d + l} \right){\sin \left( {2\; \theta} \right)}}}} \\ {= {{2r\; \cos^{2}\theta} - {2d\; \cos \; {\theta sin}\; \theta} - {X\; \cos^{2}\theta} +}} \\ {{{X\; \sin^{2}\theta} + {2\left( {d + l} \right)\cos \; {\theta sin}\; \theta}}} \\ {= {{2\left( {r + {l\; \tan \; \theta}} \right)\cos^{2}\theta} - {2X\; \cos^{2}\theta} + X}} \\ {= {X + {2h\; \cos^{2}\theta} - {2X\; \cos^{2}\theta}}} \\ {= {X + {{2\left\lbrack {\left( {h - X} \right)\cos \; \theta} \right\rbrack}\cos \; \theta}}} \\ {= {X + {2\sigma_{r}\cos \; \theta}}} \end{matrix}$ and $\begin{matrix} {{{{- 2}{\Delta sin\theta}} - \rho_{2r}} = {{{- 2}\left( {{r\; \cos \; \theta} - {d\; \sin \; \theta}} \right)\sin \; \theta} + {X\; {\sin \left( {2\; \theta} \right)}} + {\left( {d + l} \right){\cos \left( {2\; \theta} \right)}}}} \\ {= {{{- 2}r\; \cos \; {\theta sin}\; \theta} + {2d\; \sin^{2}\theta}\; + {2X\; \cos \; {\theta sin\theta}} +}} \\ {{\left( {d + l} \right)\left( {{\cos^{2}\; \theta} - {\sin^{2}\; \theta}} \right)}} \\ {= {d + l - {2r\; \cos \; {\theta sin}\; \theta} - {2l\; \sin^{2}\theta} + {2X\; \cos \; {\theta sin}\; \theta}}} \\ {= {d + l - {2\left( {r + {l\; \tan \; \theta}} \right)\cos \; {\theta sin}\; \theta} + {2X\; \cos \; {\theta sin}\; \theta}}} \\ {= {d + l - {2h\; \cos \; {\theta sin}\; \theta} + {2X\; \cos \; {\theta sin}\; \theta}}} \\ {= {d + l - {2\sigma_{r}\sin \; {\theta.}}}} \end{matrix}$

The second point of P′ (t=1+Δ_(t)) can be expressed as

$\begin{matrix} {P^{\prime} = \left( {\frac{\left( {d + l} \right)\left( {{2{\Delta cos}\; \theta} + {\left( {1 + \Delta_{i}} \right)\rho_{1r}}} \right)}{{{- 2}{\Delta sin}\; \theta} - {\left( {1 + \Delta_{i}} \right)\rho_{2r}}},\frac{\left( {d + l} \right)\left( {1 + \Delta_{i}} \right)Y}{{{- 2}{\Delta sin}\; \theta} - {\left( {1 + \Delta_{i}} \right)\rho_{2r}}},{- l}} \right)} \\ {= \left( {\frac{\left( {d + l} \right)\left( {{2{\Delta cos}\; \theta} + \rho_{1r} + {\Delta_{i}\rho_{1r}}} \right)}{{{- 2}{\Delta sin}\; \theta} - \rho_{2r} - {\Delta_{i}\rho_{2r}}},\frac{{\left( {d + l} \right)Y} + {{\Delta_{i}\left( {d + l} \right)}Y}}{{{- 2}{\Delta sin}\; \theta} - \rho_{2r} - {\Delta_{i}\rho_{2r}}},{- l}} \right)} \\ {= \begin{pmatrix} {\frac{{\left( {d + l} \right)\left( {X + {2\sigma_{r}\cos \; \theta}} \right)} + {{\Delta_{i}\left( {d + l} \right)}\rho_{1r}}}{d + l - {2\sigma_{r}\sin \; \theta} - {\Delta_{i}\rho_{2r}}},} \\ {\frac{{\left( {d + l} \right)Y} + {{\Delta_{i}\left( {d + l} \right)}Y}}{d + l - {2\sigma_{r}\sin \; \theta} - {\Delta_{i}\rho_{2r}}},{- l}} \end{pmatrix}} \end{matrix}$

Hence, if we define

A=(d+l)(X+2σ, cos θ);

B=d+l−2σ_(r) sin θ;

E=(d+l)Y;

and

Δ_(A)=Δ_(t)(d+l)ρ_(1r);

Δ_(B)=Δ_(t)ρ_(2r);

Δ_(E)=Δ_(l)(d+l)Y

then P′ for t=1+Δ_(l) can be written as

$P^{\prime} = \left( {\frac{A + \Delta_{A}}{B - \Delta_{B}},\frac{E + \Delta_{E}}{B - \Delta_{B}},{- l}} \right)$

Note that A/B is the x-coordinate of P¹′ and E/B is the y-coordinate of P₂′. Hence P′ can indeed be computed incrementally.

The skilled artisan will appreciate that the above calculations may be embodied in software code for converting an STM image as described herein into an image-plus-depth, and from there to a 3D image. Example software code is set forth herein in Appendices 1 and 2.

The skilled artisan will further appreciate that the above-described devices, and methods and software therefore, are adaptable to a variety of applications, including document cameras, endoscopy, three-dimensional Web cameras, and the like. Representative designs for devices for providing three-dimensional intraoral images are shown in FIGS. 22 and 23, having an STM 12 according to the present disclosure, an external structured light source 40, and an imager (digital camera 42 in FIG. 22, shutter/CCD 52 in FIG. 23. The device of FIG. 22 is contemplated for obtaining three-dimensional images of an entirety of a patient's oral cavity, whereas the device of FIG. 23 is contemplated for obtaining three-dimensional images of discrete regions of a patient's oral cavity, such as tooth 54.

Likewise, FIG. 24 shows an embodiment of a three-dimensional Web camera 60, comprising an STM 12 according to the present disclosure. The camera 60 includes a housing 62, a lens/aperture 64, an external light source 66, and a shutter/CCD 68. A concave lens 70 is provided at a front opening 72 of the STM 12 to reduce the size of the Web camera 60 without reducing the necessary field of view. FIG. 25 presents a nine-view image provided by a three-dimensional Web camera as shown in FIG. 24, demonstrating that the field of view for the STM of the present disclosure is indeed larger.

The foregoing description is presented for purposes of illustration and description of the various aspects of the invention. One of ordinary skill in the art will recognize that additional embodiments of the invention are possible without departing from the teachings herein. This detailed description, and particularly the specific details of the exemplary embodiments, is given primarily for clarity of understanding, and no unnecessary limitations are to be imported, for modifications will become obvious to those skilled in the art upon reading this disclosure and may be made without departing from the spirit or scope of the invention. Relatively apparent modifications, of course, include combining the various features of one or more figures with the features of one or more of other figures. All such modifications and variations are within the scope of the to invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly, legally and equitably entitled.

APPENDIX 1

[Computing Corresponding Point P_(r)′] [Initialization] σ_(r) := (h − X)cosθ; ρ_(1r) := −X cos(2θ) + (d + l)sin(2θ); ρ_(2r) := −X sin(2θ) − (d + l)cos(2θ); C := (0,0,d); /* Location of the camera */ P₁ = (X,Y,−l); /* Corresponding point of A in virtual central view */ t := 1; /* Start point of the digitization parameter of P₁P₂ */ Δ_(t) := δ/(d + l); /* Step size for digitization parameter of P₁P₂ */ P := P₁; /* Start point of the digitization */ Δ_(P) := Δ_(t) (P₁ − C); /* Step size for digitization of P₁P₂ */ t_(min) := 1; /* Initialize the parameter for P_(r)′ */ P_(min) := P₁; /* Initialize the location of P_(r)′ */ A := (X + 2σ_(r) cosθ)(d + l); /* Numerator of x-component of P₁′ */ B := d + l − 2σ_(r) sinθ; /* Denominator of x-component of P₁′ */ E := (d + l)Y; /* Numerator of y-component of P₁′ */ Δ := Δ_(t)ρ_(1r) (d + l); /* Step size for updating A */ Δ_(B) := Δ_(t)ρ_(2r); /* Step size for updating B */ Δ_(E) := ΔE; /* Step size for updating E */ ε_(t) := 1; /* Initialize the error tolerance for intensity comparison */

[Corresponding Point Identification] for i := 1 to N − 1 do { t := t + Δ_(t); /* Update the digitization parameter */ P := P + Δ_(P); /* Update current location of digitization process */ A := A + Δ_(A); /* Update numerator of x-component of P′ */ B := B − Δ_(B); /* Update denominator of x-component of P′ */ E := E + Δ_(E); /* Update numerator of y-component of P′ */ X := A/B; /* Compute x-component of P′ */ Y := E/B; /* Compute y-component of P′ */ α := [m X − (m + 1)h]/(2h); β := [n Y + (n − 1)h]/(2h); /* (α,β) is the counterpart of P′ in the STM image's right view */ ε := Match(x,y,α,β); if (ε < ε_(r)) then {ε_(r) := ε; t_(min) := t; P_(min) := P;} /* this step keeps track of the digitized element whose projection in the */ /* virtual right view has the smallest difference on intensity value with */ /* that of A = (x,y) in the central view */ } Depth_of_A := (P_(min))_(z);

In the above code, Match(x,y,α,β) is a function that will compare intensities of a patch centered at (x,y) in the central view with the intensities of a same dimension patch centered at (α,β) in the right view of the STM image. match( ) can use one of the techniques described in herein or a technique of its own. This function returns a positive real number as the difference of the intensity values.

Note also that the parameters α and β are real numbers, not integers. When computing the intensity at (α,β), one shouldn't simply round α and β to the nearest integers, but use the following formula instead to get a more appropriate approximation:

I(α,β)=C _(i,j) I(i,j)+C _(i+1,j) I(i+1,j)+C _(i,j+1) I(i+1,j)+C _(i+1 j+1) I(i+1,j+1)

where i≦α<i+1, j≦β<j+1 and C_(i,j), C_(i+1,j), C_(i,j+1) and C_(i+1,j+1) are real number coefficients defined as follows:

C _(i,j)=(i+1−α)(j+1−β);

C _(i+1,j)=(α−i)(j+1−β);

C _(i,j+1)=(i+1−α)(β−j);

C _(i+1,j+1)=(α−i)(β−j).

APPENDIX 2

One can easily extend the software code of Appendix 1 to compute P_(r)′, P_(l)′, P_(t)′ and P_(b)′ at the same time. The code is shown below.

[Computing Corresponding Points P_(r)′, P_(l)′, P_(t)′ and P_(b)′] [Initialization] σ_(r) := (h − X)cosθ; σ_(l) := (h + X)cosθ; σ_(t) := (h − Y)cosθ; σ_(b) := (h + Y)cosθ; ρ_(1r) := −X cos(2θ) + (d + l)sin(2θ); ρ_(2r) := −X sin(2θ) − (d + l)cos(2θ): ρ_(1l) := −X cos(2θ) − (d + l)sin(2θ); ρ_(2l) := X sin(2θ) − (d + l)cos(2θ); ρ_(1t) := −Y cos(2θ) + (d + l)sin(2θ); ρ_(2t) −Y sin(2θ) − (d + l)cos(2θ); ρ_(1b) := −Y cos(2θ) − (d + l)sin(2θ); ρ_(2b) := Y sin(2θ) − (d + l)cos(2θ); C := (0,0,d); /* Location of the camera */ P₁ = (X,Y,−l); /* Corresponding point of A in virtual central view */ t := 1; /* Start point of the digitization parameter of P₁P₂ */ Δ₁ := δ/(d + l); /* Step size for digitization parameter of P₁P₂ */ P := P₁; /* Start point of the digitization */ Δ_(P) := Δ_(t)(P₁ − C); /* Step size for digitization of P₁P₂ */ t_(min.r) := 1; P_(min.r) := P₁; t_(min.l) := 1; P_(min.l) := P₁; /* Initialize the tracking parameters and pointers for P_(r)′ and P_(l)′ */ t_(min.t) := 1; P_(min.t) := P₁; t_(min.b) := 1; P_(min.b) := P₁; /* Initialize the tracking parameters and pointers for P_(t)′ and P_(b)′*/ t_(min.rl) := 1; P_(min.rl) := P₁; t_(min.tb) := 1; P_(min.tb) := P₁; /* Initialize the tracking parameters and pointers for cross-matching on */ /* P_(r)′ and P_(l)′, and on P_(t)′ and P_(b)′*/ t_(min.rt) := 1; P_(min.rt) := P₁; t_(min.lb) := 1; P_(min.lb) := P₁; /* Initialize the tracking parameters and pointers for cross-matching on */ /* P_(r)′ and P_(t)′, and on P_(l)′ and P_(b)′*/ t_(min.lt) := 1; P_(min.lt) := P₁; t_(min.rb) := 1; P_(min.rb) := P₁; /* Initialize the tracking parameters and pointers for cross-matching on */ /* P_(l)′ and P_(t)′, and on P_(r)′ and P_(b)′*/ AR := (X + 2σ_(r) cosθ)(d + l); /* Numerator of x-component of P₁′ in RV*/ BR := d + l − 2σ_(r) sinθ; /* Denominator of x-component of P₁′ in RV*/ ER := (d + l)Y; /* Numerator of y-component of P₁′ in RV*/ AL := (X − 2σ_(l) cosθ)(d + l); /* Numerator of x-component of P′₁ in LV*/ BL := d + l − 2σ sinθ; /* Denominator of x-component of P₁′ in LV*/ AT := (Y + 2σ_(t) cosθ)(d + l); /* Numerator of y-component of P₁′ in UV*/ BT := d + l − 2σ_(t) sinθ; /* Denominator of y-component of P₁′ in UV*/ ET := (d + l)X; /* Numerator of x-component of P₁′ in UV*/ AB := (Y − 2σ_(b) cosθ)(d + l); /* Numerator of x-component of P₁′ in BV*/ BB := d + l − 2σ_(b) sinθ; /* Denominator of x-component of P₁′ in BV*/ Δ_(AR) := Δ_(t)(d + l)ρ_(1r); /* Step size for updating AR*/ Δ_(BR) := Δ_(t)ρ_(2t); /* Step size for updating BR */ Δ_(ER) := Δ_(t)(d + l)Y; /* Step size for updating ER */ Δ_(AL) := Δ_(t)(d + l)ρ_(1l); /* Step size for updating AL*/ Δ_(BL) := Δ_(t)ρ_(2l); /* Step size for updating BL */ Δ_(AT) := Δ_(t)(d + l)ρ_(lt); /* Step size for updating AT*/ Δ_(BT). := Δρ_(2t); /* Step size for updating BT */ Δ_(ET) := Δ_(t)(d + l)X; /* Step size for updating ET */ Δ_(AB) := Δ_(t)(d + l}ρ_(1b); /* Step size for updating AB*/ Δ_(BB) := Δ_(t)ρ_(2b); /* Step size for updating BB */ ε_(r) := 1; ε_(l) := 1; ε_(t) := 1; ε_(b) := 1; ε_(rl) := 1 ε_(tb) := 1; ε_(rt) := 1; ε_(rb) := 1; ε_(lt) := 1; ε_(lb) := 1; /* Initialize the error tolerances for intensity comparison */

[Corresponding Point Identification] for i := 1 to N − 1 do { t := t + Δ_(t); /* Update the digitization parameter */ P := P + Δ_(P); /* Update corrent location of digitization process */ AR := AR + Δ_(AR); AL := AL + Δ_(AL); /* Update numerator of x-component of P′ in RV and LV*/ BR := BR + Δ_(BR); BL := BL + Δ_(BL); /* Update denominator of x-component of P′ in RV and LV*/ ER := ER + Δ_(ER); /* Update numerator of y-component of P′ in RV and LV */ AT := AT + Δ_(AT); AB := AB + Δ_(AB); /* Update numerator of y-component of P′ in TV and BV*/ BT := BT + Δ_(BT); BB := BB + Δ_(BB); ;/* Update denominator of y-component of P′ in TV and BV*/ ET := ET + Δ_(ET); /* Update numerator of x-component of P′ in TV and BV */ X _(R) := AR/BR; Y _(R) := ER/BR; X _(L) := AL/BL; Y _(L) := ER/BL; /* Compute x- and y-components of P′ in RV and LV*/ X _(T) := ET/BT; Y _(T) := AT/BT; X _(B) := ET/BB; Y _(B) := AB/BB; /* Compute x- and y-components of P′ in TV and BV*/ α_(R) := [m X _(R) − (m + 1)h]/(2h); β_(R) := [n Y _(R) + (n − 1)h]/(2h); /* (α_(R),β_(R)) is the counterpart of P′ in the STM image's right view */ α_(L) := [m X _(L) + (m + 1)h]/(2h); β_(L) := [n Y _(L) + (n − 1)h]/(2h); /* (α_(L),β_(L)) is the counterpart of P′ in the STM image's left view */ α_(T) := [m X _(T) + (m − 1)h]/(2h); β_(T) := [n Y _(T) − (n + 1)h]/(2h); /* (α_(T),β_(T)) is the counterpart of P′ in the STM image's upper view */ α_(B) := [m X _(B) + (m − 1)h]/(2h); β_(B) := [n Y _(B) + (n + 1)h]/(2h); /* (α_(B),β_(B)) is the counterpart of P′ in the STM image's lower view */ ε := Match(x,y,α_(R),β_(R)); if (ε < ε_(r)) then {ε_(r) := ε; t_(min.r) := t; P_(min.r) := P;} /* this step keeps track of the digitized element whose projection in the */ /* virtual right view has the smallest difference on intensity value with */ /* A = (x,y) in the central view */ ε := Match(x,y,α_(L),β_(L)); if (ε < ε_(l) ) then {ε_(l) := ε; t_(min.l) := t; P_(min.l) := P;} /* this step keeps track of the digitized element whose projection in the */ /* virtual left view has the smallest difference on intensity value with */ /* A = (x,y) in the central view */ ε := Match(x,y,α_(T),β_(T)); if (ε < ε_(t)) then {ε_(t) := ε; t_(min.t) := t; P_(min.t) := P;} /* this step keeps track of the digitized element whose projection in the */ /* virtual upper view has the smallest difference on intensity value with */ /* A = (x,y) in the central view */ ε := Match(x,y,α_(B),β_(B)); if (ε < ε_(b) ) then { ε_(b) := ε_(b); t_(min.b) := t; P_(min.b) := P; } /* this step keeps track of the digitized element whose projection in the */ /* virtual lower view has the smallest difference on intensity value with */ /* A = (x,y) in the central view */ } Depth_of_A := (P_(min))_(z); 

1. A system for providing a three-dimensional representation of a scene from a single image, comprising a reflector comprising a plurality of reflective surfaces for providing an interior reflective area defining a substantially quadrilateral cross section; wherein the reflector reflective surfaces are configured whereby the reflector reflective surfaces provide nine corresponding views of the image.
 2. The system of claim 1, wherein the reflector reflective surfaces are fabricated of a material whereby double images are substantially eliminated.
 3. The system of claim 1, wherein the reflector reflective surfaces substantially define a square or rectangular side view.
 4. The system of claim 1, wherein the reflector reflective surfaces substantially define an isosceles trapezoid in side view.
 5. The system of claim 1, further including an imager for converting the nine-view image into digital data.
 6. The system of claim 5, wherein the imager is a digital camera or a scanner.
 7. The system of claim 6, wherein the imager is a digital camera and the reflector is cooperatively connected to the camera whereby an end of the reflector proximal to the camera is slidably translatable to increase or decrease a distance between said proximal reflector end and a pinhole of the camera.
 8. The system of claim 1, further including a client computing device for receiving data from the camera and for rendering said data into a stereoscopic image or an image-plus-depth rendering.
 9. The system of claim 8, wherein the step of rendering said data into a stereoscopic image comprises: obtaining a nine view image from a single scene; identifying one or more regions in a central view of said nine view image; identifying corresponding regions in adjacent views to the left and to the right of the central view; interlacing the central, left, and right images of the identified one or more regions to generate an interlaced image of the identified one or more regions; and outputting said interlaced image to a display panel for displaying stereoscopic images.
 10. The system of claim 8, wherein the step of rendering said data into an image-plus-depth rendering comprises: calibrating the camera to obtain camera parameters defining a relationship between camera field of view and a view area defined by the reflector; for one or points on the central view, identifying corresponding points on the remaining eight views in a nine-view image taken from the reflector for the one or more points on the central view, computing a depth from the corresponding one or more points on a left view, a right view, an upper view, and a bottom view of the nine view image; combining said corresponding points data and said depth data to provide a three-dimensional image.
 11. A computer program product available as a download or on a computer-readable medium for installation with a computing device of a user, for rendering a nine view image into a stereoscopic image or an image-plus-depth rendering, comprising: a first component for identifying a camera location relative to a scene of which a nine view image is to be taken; a second component for identifying a selected point in a central view of the nine view image and for identifying points corresponding to the selected point in the remaining eight views; and a third component for identifying a depth of the selected point or points in the central view; and a fourth component for combining the corresponding points data and the depth data to provide a three-dimensional image.
 12. The computer program product of claim 11, wherein the nine view image is obtained by a system comprising: a camera for translating a single image into digital data; and a reflector comprising a plurality of reflective surfaces for providing an interior reflective area defining a substantially quadrilateral cross section; wherein the reflector is cooperatively connected to the camera whereby a longitudinal axis of said reflector is substantially identically aligned with an optical axis of the camera.
 13. The computer program product of claim 11, wherein the second and third components may be the same or may identify depth and corresponding points concurrently.
 14. A computing system for rendering a nine view image into a stereoscopic image or an image-plus-depth rendering, comprising: a camera for translating a single image into a digital form; a reflector comprising a plurality of reflective surfaces for providing an interior reflective area defining a substantially quadrilateral cross section such that the reflective surfaces provide a nine-view image of a scene viewed from a point of view of the camera; and at least one computing device for receiving data from the camera; wherein the computing device, for one or points on the central view of the received nine-view image, identifies corresponding points on the remaining eight views in the nine-view image; further wherein the computing device, for the one or more points on the central view of the received nine-view image, computes a depth from the corresponding one or more points on a left view, a right view, an upper view, and a bottom view of the nine view image; said corresponding point data and depth data being combined to provide a three-dimensional image.
 15. The computing system of claim 14, further including a display for displaying, a three-dimensional image generated by the computing device. 